------- android培训、java培训、期待与您交流! ----------
多态
定义:某一类事物的多种存在形态,就是一个对象对应着不同的类型
体现:父类或者接口的引用指向或接受了自己的子类对象
作用:提高程序扩展性和后期的可维护性
前提:需要存在继承或实现关系、需要有覆盖操作
好处:提高代码的扩展性,前期定义的代码可以使用后期的内容
弊端:前期定义的内容不能使用后期子类的特有内容
P.S.:instanceof判断对象类型,只能用于引用数据类型判断
对象1 instanceof 类2 判断对象1是否是类2
多态下成员的特点:
成员变量:
编译时:参考引用型变量所属的类中是否有调用的成员变量,有,编译通过,没有,编译失败;
运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量;
即编译和运行都参考等号左边
成员函数(非静态):
编译时:参考引用型变量所属的类中是否有调用的函数,有,编译通过,没有,编译失败;
运行时:参考的是对象所属的类中是否有调用的函数;
即编译时看左边,运行时看右边
静态函数:
编译时:参考的是对象所属的类中是否有调用的函数;
运行时:参考的是对象所属的类中是否有调用的函数;
即编译和运行都看左边
内部类:(内置类、嵌套类)
特点:内部类可以直接访问外部类中的成员,包括私有成员,外部类要访问内部类的成员则必须要建立内部类对象
位置:
内部类定义在成员位置上,可以被private、static修饰,被static修饰的内部类只能访问外部类中的静态成员
如果内部类及其成员都是静态的可以不用创建内部类对象,直接调用;
如果内部类中定义了静态成员,那么该内部类也必须是静态的;
内部类能直接访问外部类中的成员,是因为内部类持有外部类的引用,
外部类名.this;
内部类定义在局部位置上,也可以直接访问外部类中的成员,同时可以访问所在局部中的局部变量,但必须是被final修饰的
匿名内部类:就是建立一个带内容的外部类或者接口的子类匿名对象
格式:new 外部类名或接口(){覆盖类或接口中的代码(也可自定义)}