一、this和super的使用
this用于指向当前对象,其最大作用就是让类中的一个方法访问该类中的另一个方法或Field。
this(和类名)可以作为调用者来访问被覆盖的成员变量(局部变量覆盖成员变量)。
super是用于限定该对象调用它继承的父类的方法或Field。指向父类对象
this和super都不能出现在用static修饰的方法中,使用this和super是调用者是对象,而不是类
二、变量
成员变量是在类范围里定义的变量,局部变量是在方法里定义的变量。
成员变量里以static修饰的是类Field;不以static修饰的是实例Field。
局部变量里含有形参(作用域是整个方法体内有效)、方法局部变量(作用范围到方法结束时失效)、代码块局部变量(作用范围到代码块结束时失效)。
三、封装、构造器
在Java中类的Field被private修饰之后,必须提供属性相应的setter和getter方法,要想操作这样的Field必须要通过setter方法来操作,通过getter方法来获取其值。命名为 setAbc(String Name) getAbc()
构造器是创建对象的重要途径,Java类中必须至少包含一个构造器,默认构造器无参数,执行体为空。
如果程序员自定义了有参数的构造器,则在创建实例时必须赋予实参 ConstructorTest ct=new Constructor("a","b")
其实在系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是还不能被外部程序访问,只能在该构造器中通过this来引用,当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回。
- 当构造器B完全包含了构造器A时,若构造器B想要调用构造器A的初始化代码,可以使用this关键字来调用,只能在构造器中调用另一个重载的构造器,不能在方法中调用,而且此语句只能作为构造器执行体的第一条语句。
public Apple(String name,String color)
{
this.name=name;
this.color=color
}
public Apple(String name,String color,double weight)
{
this("苹果","红色");
this.weight=weight;
}
四、继承
Java类只能有一个直接父类,可以有多个间接父类。先执行父类构造器,再执行子类构造器
子类不能获得父类的构造器。
子类在重写父类方法时,覆盖方法和被覆盖方法只能同时为类方法或实例方法,不能一个为类方法,另一个为实例方法)(即同时为static修饰)。
- 在子类构造器中调用父类构造器时用super来完成,也必须出现在子类构造器执行体的第一行,所以this调用和super调用不能同时出现。