1)抽象类
抽象方法:将共性的行为抽取到父类 发现该方法实现逻辑无法再父类中给出具体明确,该方法定义为2抽象方法
注意: 如果一个类存在抽象方法 就必须是抽象类
public abstract void 方法();
2)注意事项
抽象类不能创建对象
抽象有构造方法 都是不能实例化
抽象类的子类 a 必须重写抽象方法
b 也可以把自己变成抽象类
抽象类中可以是普通方法 也可以是抽象方法 但是有抽象方法一定是抽象类
3)final
是最终的意思
用final修饰方法 :表示这个方法是最终方法 不能被重写
用final修饰变量:表示这个变量是常量 不能再被赋值
final int a=1;
a=10;//注意 这里已经不能被赋值了
用final修饰类:表示这个类是最终类 不能被继承
4)代码块
5)接口
当一个类中所有的方法都是抽象方法的时候 我们就可以定义接口
接口也是一种引用数据类型
接口来定义规则、程序的扩展性
public interface 接口名{}
接口和类是实现关系 implements
接口可以多继承
接口成员变量:只能是常量 系统加上关键字 public final static
构造方法 :接口中是没有构造方法的
成员方法:只能是抽象方法 系统加上关键字 public abstract
JDK8 以后 接口中默认方法定义
default
a 默认方法不是抽象方法 不强制重写
b public 可以省 default不能省略
c 如果实现了多个接口 多个接口存在相同的方法声明 子类需要对方法重写
接口中允许定义static静态方法
JDK9 以后 接口允许私有方法 private
8)多态
同一个对象 再不同时刻表现出来的不同形态
多态的前提
有继承/实现关系
有方法重写
有父类引用指向子类
多态中对成员访问的特点
构造方法 同继承一样,子类会通过super访问父类的构造方法
成员变量 :编译看父类 执行看父类
成员方法 编辑看左边父类 执行看右边子类
多态的好处和弊端
好处 提高程序的扩张性 定义方法的时候可以将父类作为参数 接受全部父类的子类作为参数
弊端 不能使用子类特有的方法