多态:
内部类:
①也就是当成一个类的成员存在,成员内部类中不能有静态变量和静态方法
1、在外部类的非静态方法中访问成员内部类的成员:new 内部类()
2、在外部类的静态方法中访问内部类的成员:new 外部类().new 内部类()
3、在第三方类中,无论是静态方法还是非静态方法,都需要:new 外部类().new 内部类()
内部类成员如果被private修饰则无法被调用。
4、在内部类的方法中访问外部类的非静态成员:new 外部类()或外部类名.this
5、在内部类的方法中访问外部类的静态成员:“外部类名. ”来访问静态成员
②就是在成员内部类的前面加上static修饰。静态内部类中可以由静态变量和静态方法。
1、在外部类的方法中访问静态内部类的非静态成员:new 内部类()
2、在外部类的方法中访问静态内部类的静态成员:外部类名.内部类名.静态成员(静态内部类中的)
3、在内部类的方法中访问外部类的非静态成员:new 外部类()
4、在内部类的方法中访问外部类的静态成员:外部类名.静态成员(外部类中的)
5、在第三方类中访问静态内部类的非静态成员:new 外部类名.内部类名()
6、在第三方类中访问静态内部类的静态成员:外部类名.内部类类名.静态成员(内部类中的)
③就是在方法内部定义的内部类。只在定义它的方法内部有效。不能有static修饰的成员。
1、局部内部类可以访问外部类的非静态成员:外部类名.this.非静态成员(外部类)2、局部内部类可以访问外部类的静态成员:外部类名.静态成员(外部类)
3、局部内部类可以访问它所在方法内部的局部变量,但这个变量必须由final修饰。
④匿名内部类:
1、匿名内部类就是没有名字的内部类,一定是在new的后面,隐含实现一个接口或实现一个类。
2、使用匿名内部类时的几个原则:
(1)不能有构造方法
(2)不能定义任何静态成员、方法和类
(3)不能是public,protected,private,static。
(4)只能创建匿名内部类的一个实例。
3、在以下情况中,可以考虑使用匿名内部类:
(1)只用到类的一个实例。
(2)类在定义后马上用到。
(3)类非常小
(4)给类命名并不会导致你的代码更容易被理解。