黑马程序员技术交流社区
标题:
关于内部类知识的小总结
[打印本页]
作者:
鲁行
时间:
2014-10-6 00:11
标题:
关于内部类知识的小总结
内部类:
成员内部类:可以访问外部类的所有成员(包括被static和private修饰的成员)
外部类要访问内部的成员,要创建内部类对象。
非静态的内部类中不能创建静态的成员
创建成员内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
思维拓展:如果想访问父类中被private修饰的成员,除了让父类自己调用外,
还可以在父类中的创建成员内部类通过这个内部类来访问。
静态内部类:被static修饰的成员内部类,就被称为静态内部类。
静态内部类只能访问外部类的静态成员。
而静态内部类的所有成员都可以被所在的外部类访问。
创建静态内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
记忆法:创建对象,就是调用构造函数的过程。由于成员内部类不是静态的所以不能用外部类名
直接调用,而静态内部类可以用外部类名直接调用。
局部内部类(方法内部类):
方法中定义的类。
注意:
局部内部类访问局部变量,该变量必须被final修饰。
(面试题:
因为局部变量在栈内存中随着方法的调用结束而消失,而局部内部类存在于堆内存中
如果该内部类中还有地方使用着局部变量,那么该变量就必须还存在,所以必须用final修饰)
如果父类或者父接口出现的地方,完全可以用子类对象替代。
匿名内部类的使用:(没有名字的局部内部类)
前提:
必须存在一个类,抽象类或者接口。
格式:
new 类名或者接口名()
{
重写类或者接口中的方法。
也可以自己定义新的方法。
};
理解:是一个继承了类或者实现了接口的匿名的子类对象。
什么时候使用匿名内部类呢?
一般来说,当接口或者抽象类中的方法在3个以下的时候,考虑使用匿名内部类。
在看到有一个方法接收的形式参数是一个抽象类或者接口的时候,
就可以考虑采用匿名内部类实现。
作者:
suoxidong
时间:
2014-10-6 07:01
我也学到这里了 共勉啊
作者:
张业婷
时间:
2014-10-6 09:03
赞一个,一起学!
作者:
kid1943
时间:
2014-10-6 10:19
多谢楼主分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2