java中的多态
当父类为father,子类为son
father f=new son();
用f调用成员变量,编译看父类,运行看父类
用f调用成员方法,编译看父类,运行看子类,子类没有再看父类
用f调用静态方法,编译看父类,运行看父类,相当于用类名调用
运行优先级:父类static > 子类static > 父类构造代码块 > 父类构造方法 > 子类构造代码块 > 子类构造方法
eclipse运行按钮旁边下三角可以更改要运行的类
当父类为father,子类为son
father f=new son();相当于向上转型,把子类强制转为父类
son s=(father)f;相当于向下转型,把父类强制转为子类
多态主要用于参数传递,扩展性好,如:传递父类对象,根据需要转换为想要的子类对象
关键字instanceof:判断父类的引用是什么子类类型,如:f instanceof s
抽象类:abstract class 类名
抽象方法:public abstract void function();
abstract不能用来修饰成员变量
抽象类不能实例化,不过可以利用多态指向子类来实例化
抽象类不一定要有抽象方法,有抽象方法的类一定是抽象类或接口
抽象类的子类
要么也是抽象类
要么重写抽象类的所有抽象方法
abstract不能和static、final、private共用
接口定义:interface 接口名{}
接口里的方法一定要放抽象方法
子类实现接口的方法:class 类名 inplements 接口名{}
接口中的方法如果不写abstract,系统会自动添加隐藏默认的abstract
接口中的变量,系统会自动添加隐藏默认的public、static、final
接口与类之间支持多实现
接口与接口之间支持多继承
类与类之间只支持多层继承,不支持多继承
接口:共性功能
抽象:扩展功能