内部类、匿名类【对象】

来源:互联网 发布:高德地图数据采集器 编辑:程序博客网 时间:2024/06/08 03:32

1、  定义内部类后,实际上,内部类获取外部类的数据、及method访问权限;可直接访问;而外部类也可以直接访问;外部类可以通过内部类对象.method名称;内部类对象.field.名称来访问使用;双向不受控于private限制;

2、  我们特别强调类之间关系时,可考虑内部类;

1)  当外部类定义为public时,内部类也具备public属性;

2)   

 2、匿名内部类(后面的理解,本质上是匿名对象)的理解:不是没有类的名字,是创建没有名称的对象/实例,“利用内部类创建不具名称的对象,并利用它访问到类里面的成员”,

(new classname (para)   //这里的para是常规对象创建时可能用到的para,根据构造函数确定{返回值类型 method名称(para1,para2.。。。。){//method body}}).method名称(para1,para2,para3。。。。)

:思考,创建了没有名字的对象,不是没有名字的类,类不可能没有名字;

:本质,是在具备类定义(可以是内部类,也可以是外部类)的基础上,创建没有名字的对象;为了补全代码,所以出现了内部类(个人理解,内部对象更为合理);

主要用途,用于补充内部类没有定义到的method方法,并有效简化代码;

class Inner{}public class TestInner {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint i=(new Inner(){int get_num(){return 100;}}).get_num();}

我们为什么需要内部类?

1、一般来说,内部类集成某个类或者实现某个接口,内部类提供了一种进入其外围类的方法;

2、每个内部类都能独立的继承一个(接口的实现),无论外围类是否继承了某个接口的实现,对内部类没有任何影响;

3、内部类可以具备多个实例,而且多个实例可以以不同的方式实现同一个接口,或者继承同一个类;

4、内部类可以具备多个实例,每个实例都有自己的状态信息,并且与外围类对象的信息相互独立;

4、创建内部类并不依赖于外围对象的创建;
0 0
原创粉丝点击