多态
(多态形式:具体类多态,抽象类多态,接口多态)
多态中的成员访问特点
成员变量
编译看父类、运行看父类
成员方法
编译看父类,运行看子类
父类引用指向子类对象
代码块
静态属性是属于类的,只要类加载到内存了,就可以使用类名来访问。
非静态属性是属于对象的,只有创建出对象了,使用对象才可以访问。
静态代码块:
- 由static{} 修饰
- 位置:在类里面、方法外面
- 功能:给静态变量初始化
- 运行:类加载的时候调用,系统调用,只执行一次
非静态代码块
- 直接由{} 修饰
- 位置:在类里面、方法外面
- 功能:创建对象时,给非静态变量赋值
- new 操作时被调用
抽象类
对类抽象,包括属性、行为。
—抽象类特点
抽象类和抽象方法必须使用abstract关键字修饰
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
抽象类不能实例化,可以参照多态的方式,通过子类对象实例化,这叫抽象类多态。
抽象类的子类
–要么重写抽象类中的所有抽象方法
–要么是抽象类
–抽象类成员特点
- 成员变量(常量、变量)
- 构造方法(有参、无参构造)
- 成员方法(抽象/普通方法)
接口
对行为抽象,主要是行为
–接口特点
用关键字interface修饰
类实现用implements
接口不能实例化,可以通过实现类对象实例化,这叫接口多态
接口子类
–要么重写接口中的所有抽象方法
–要么子类也是抽象类
–成员特点
- 成员变量:只能是常量 默认修饰符:public static final
- 构造方法:没有,接口主要是扩展功能,没有具体实现
- 成员方法:只能抽象方法,默认修饰符:public abstract