1.多态:一个对象对应着多种类型。
好处:代码扩展,前期代码可以使用后期的内容
弊端:前期内容不能使用子类特有功能。
2.向上转型:限制使用子类特有功能,格式:父类 a = new 子类();
注意:将子类型隐藏,就不能使用子类特有功能。
向下转型:使用特有功能,格式:子类 c = (子类)a;
注意:向下转型前通常用 instanceof判断对象的具体类型。if(a instanceof 子类){向下转型}
3.多态-成员函数:编译看左边,运行看右边(子类)。但是,静态函数以及成员变量都是看左边(父类)。
4.内部类
内部类可以直接访问外部类的成员(outer.this.成员),外部类要访问内部类,必须建立内部类的对象。
如果内部类是静态的,相当于一个外部类,格式:outer.inner in = new outer.inner();
内部类有静态成员,则该内部类也必须是静态的。
匿名内部类:内部类的简写格式,其实就是子类对象。此时,内部类必须继承或者实现一个外部类或者接口。格式:new 父类or接口(){}