标签:内部类
与main方法在同一个类中的方法不是静态类如何调用?
* ArrayDemo类的对象使用对象调用功能
ArrayDemo ad=new ArrayDemo();
但由于ArrayDemo为测试类一般要创建其他对象,用其他类对象调用其他类中的功能,所以需要 提供一个专门操作数组的工具类
若工具类的构造方法被private修饰那么无法创建对象要想调用这个类中的方法,使用static修 饰直接用类名调用
形参和返回值问题研究
*形式参数:
*基本数据类型,需要什么数据类型,在实际传参的时候就传什么数据类型,形式数据的 改变对实际参数没有影响
*如果实际参数是为引用类型,那么要对这个类创建一个对象
*具体类:创建该类的对象
*抽象类:需要创建该抽象类的子类(抽象类多态)
*接口:由于接口不能实例化,需要定义接口子实现类,然后通过子实现类进行实 例化
*返回值:
*具体类:直接返回该类对象(通常使用匿名对象)
*抽象类:需要返回的是该类的子类的子类对象
*接口:需要接口对应的子实现类对象(可以用匿名对象实现)
内部类
在一个类中定义另一个类
*特点:
*内部类可以直接访问外部类的成员包括私有的
*外部类要访问内部类的成员必须创建内部类的对象访问该类的成员
在测试类访问内部类成员的格式方法:
外部类名.内部类名 对象名=外部类对象名.内部类对象名
*分类:
*成员内部类:处在外部类成员的位置
成员内部类的修饰符:prinvate(保证数据的安全性),static
对于静态的一个成员内部类来说不管是静态成员内部类中成员方法是静态的还是非静态的,要 访问外部类的成员变量,该变量必须被static修饰
*局部内部类:定义在外部类的局部变量位置
无论是局部成员内部类还是成员内部类(非静态)都可以直接访问外部类成员包括私有的
问题:
*局部内部类访问局部变量为什么会出现问题?
*当前局部变量报错,必须用final修饰为什么?
这是由于局部变量是随着方法的调用而生成的,随着方法的调用完而消失的,而现在在局部 位置有一个局部内部类它要在自己的成员方法位置访问,必须将变量变成一个常量(需要 用final修饰:自定义常量)这样的变量值永远是固定的
匿名内部类:
是内部类的简化版格式
前提条件:必须存在一个类(可以是具体类,也可以是一个抽象类)
书写格式:new 接口或类名(){
方法重写;
}
当匿名内部类只有一个方法时可以直接new[](){ }.方法名()
当匿名内部类有两个或两个以上的方法时:
内部类名 对象名=new 内部类名();
实质:继承了该类或是实现了该接口的一个子类对象
标签:内部类
原文地址:http://13355940.blog.51cto.com/13345940/1976734