super和this的区别 【掌握】
- super
- super的作用:super指的是当前类的对象的父类引用
- super可以调用父类的成员属性 super.成员变量
- super可以调用父类的成员方法 super.成员方法
- super可以调用父类的构造方法 super(…)
- this的作用:this指的是当前类的对象引用
- this可以调用本类的成员属性 this.成员属性
- this可以调用本类的成员方法 this.成员方法
- this也可以调用父类的成员方法 (在本类没有的情况下) this.父类方法、this.父类属性
- this可以调用本类的构造方法 this(…)
继承中构造方法的关系【掌握】
-
子类中所有的构造方法默认都会访问父类中空参数的构造方法
因为子类会继承父类中的数据,可能还会使用父类的数据;
所以,子类初始化之前,一定要先完成父类数据的初始化。 -
每一个构造方法的第一条语句默认都是:super()
Object类是最顶层的父类。 -
父类没有无参构造方法,子类怎么办?
1.子类必须创建无参构造方法,方法内部还要调用父类构造方法;
2.子类实现有参的构造方法
3.父类自己实现无参构造方法 -
注意事项
super(…)或者this(….)必须出现在构造方法的第一条语句上
方法重写(Override)与方法重载(Overload)
方法重写:(只存在子类和父类中)
-
方法重写是指子父类出现了一模一样的方法
比如当子类需要父类的功能,而子类有自己特有内容时,可以重写父类中的方法;
这样,即沿袭了父类的功能,又定义了子类特有的内容。 -
父类中私有方法不能被重写,因为父类私有方法子类根本就无法继承,无访问权利;
子类重写父类方法时,访问权限最好就一致
方法重载(在同一个类中)
- 指本类中出现的方法名一样,参数列表不同的方法;
- 与返回值类型无关,重载可以改变返回值类型,方法的重载只看参数列表不同
Override重写和Overload重载的区别
- 作用对象不同,重写是子父类,重载是同一个类内部;
- 重写是方法一模一样,返回值也一样,只有函数体不同;
- 重载是方法名一样,参数列表不同,与返回值类型无关。
final关键字特点
- final关键字可以修饰类,方法以及变量
1.修饰类,类不能被继承,该类就成了最终类;
2.修饰变量,变量就变成了常量,只能被赋值一次,也就是指向的地址之后不能变;
3.修饰方法,方法不能被重写,子类继承父类方法后不能重写改变方法体
修饰变量
- final修饰变量叫做常量,一般会与public static共用;
- 常量命名规范,如果是一个单词,所有字母大写,如果是多个单词,每个单词都大写,中间用下划线隔开,如
public static final int MIN_SIZE = 2;//类中方法外
final修饰局部变量特性(方法内,进栈)
- 修饰基本类型,其值不能被改变;
- 修饰引用类型,是地址值不能被改变,对象中的属性可以改变;
- 修饰引用类型不可以再New
final修饰变量的2个初始化时机
- 一定义变量可以初始化【这种初始化方法比较常用】;
- 在构造方法初始化;
注意:在类中不可重复给final赋值,只能赋值一次