继承:
子类构造器:
子类所有的构造器都会先访问父类的空参构造器,在执行自己的构造器
在子类的构造器中,第一行默认都是super(); 不管你自己写不写都有
使用场景:子类构造器中,使用super(参数)
补充知识:this()访问本类中的其他构造器
多态:
分类:
对象多态:
同一个类型的变量,可以指向不同的对象
行为多态:
同一个类型的变量,调用相同的方法,执行出不同的结果
前提:必须存在 继承/实现 关系 ,并且有方法重写
好处:Aninal a= new Cat()
左边和右边松耦合
定义方法,使用父类变量,接收一切子类对象,可以使方法变得具有通用性,有利于维护和扩展
弊端:不能使用父类变量,直接调用子类特有成员
类型转换:
自动类型转换 小范围的赋值给大范围的,自动完成
大范围的不能直接赋值给小范围的
强制类型转换 子类 变量=(子类) 父类变量
可能会报:ClassCastException异常 类型转换异常
instanceof 变量 instanceof类型
final:
概念:final是最终的意思,他所修饰的成员,都不能在改变
使用:
修饰类:不能被其他类继承
修饰方法:不能被子类重写
修饰变量:只能赋值一次
常量:
public static final 类型 SCHOOL_NAME = 值
使用常量的地方,编译完了之后,被字面量替代
便于维护
抽象类:
概念:被abstract修饰的类,叫做抽象类
被absteact修饰的方法,叫做抽象方法,抽象方法是没有方法体
易错点:抽象类可以没有抽象方法
抽象方法所在的类,必须是抽象类
特点: 外部不能直接new 创建对象
借助于抽象类的子类来使用
好处:更好的支持多态
模版设计模式:
解决问题:不同类的方法中,出现了相同的代码
书写:1.定义了一个具体的方法,书写共性的代码
2.定义一个具体的方法,书写共性的代码
定义一个抽象方法,描述特性的内容,具体的内容需要让子类完成
接口:
特点:不能直接new对象
借助于接口的实现类完成 public class 实现类名 implements 接口名 ,接口名{}
实现类必须实现接口中所有的方法,负责自己必须是抽象的(后面mybatisplus可不用实现)
好处:1.更方便扩展类的功能,弥补单继承的缺陷
2.借助于多态,完成面向接口编程.右边new的东西可以随意切换
接口的继承特点:支持多继承