继承:
1、java中继承是单根的(只有一个直接父类,但是不管写不写,都直接或者间接的继承了Object类)貌似java8去掉了这个特性,继承也允许多继承
2、子类继承父类的非private 方法和属性
3、子类初始化出来之前先初始化父类。
4、若子类没有显示调用父类的构造方法,则jvm默认会调用父类的无参数构造方法
5、若需要显示调用父类的构造方法则使用super()且super()必须使用在子类构造方法 的第一行。
super/this比较
super 对象:指代父类对象的调用
super()方法:指代父类对象的引用
this对象:指代当前对象的引用
this() 方法:指代当前类的构造方法。
多态:同一个信息不同类的不同反应(可扩展性、可维护性)
方法重写:子类里面有父类中的某个方法具有相同的方法名、返回值类型、参数列表
方法重载:同一个类中多个方法拥有相同的返回值和方法名,但是参数列表不一样。
关键词final与static
final永不改变的,编译时常量,一个运行时被初始化的值,而你不希望它改变。
加上final以后类:不能被继承。方法:不能被覆盖重写,不能被子类调用。变量:值不能改变只能赋值一次且不能修改。对象:只能实例化一次,对象的引用永恒不变。
static告诉编译器只分配一次内存地址,
类:不能使用。
方法:静态方法不能使用this或者super,使用时用类的方法.获取,如:SUtil.up();
一般使用 public static final int AAA_BB 来定义常量。
抽象:设计过程中将自己不需要的代码或者不想看到的抽象化
抽象类:不明确提供实现细节的类,具体实现由子类完成,用来规范一系列子类的行为
接口:使用接口改变单一继承的缺点,接口定义一套规范,遵守这个规范可以实现功能,屏蔽了实现的细节,方便了多人开发。
接口和抽象类共同点:
1、都不能被实例化
2、都要在非抽象的子类中重写方法
不同点
抽象类可以写实例方法也可以写抽象方法,在非抽象类的子类中可以重写实例方法也可以不重写,只能继承一个类,可以定义成员变量
接口不管是否声明,方法前面都是 public abstract ,要在非抽象子类中全部重写,可以实现多个接口,只能定义常量。