4.3 super关键字
(1)super:代表的是父类,用法和this相似。可以使用super调用父类中构造方法,成员变量与成员方法。例如:super.age=10;其中age是父类中的变量。
(2)this代表本类对象的引用,即父类的内存空间的标识,super代表父类所属的空间。
(3)当子父类出现同名成员时,可以用super进行区分。
(4)子类要调用父类构造函数时,可以使用super语句。
详见“4.5子类实例化过程”中super的使用。
4.4 函数覆盖(Override)
覆盖也称之为覆写或者重写,使用环境:
(1)出现在具有父子关系的两个类中
(2)父类和子类都有一个函数,这两个函数的定义(函数名,参数列表,返回值类型)完全相同。
package com.override;
public class Person {
String name;
int age;
void introduce(){
System.out.println("我的名字是:"+name+",我的年龄是:"+age);
}
}
package com.override;
public class Student extends Person{
String address;
void introduce(){
System.out.println("我的名字是:"+name+",我的年龄是:"+age+",我的住址是:"+address);
}
}
package com.override;
public class Test {
public static void main(String[] args) {
// 生成子类对象,调用子类的方法
Student a=new Student();
a.name="哈哈";
a.age=10;
a.address="杭州市西湖区";
a.introduce();
// 生成父类对象,调用父类的方法
Person b=new Person();
b.name="哦哦";
b.age=20;
b.address="北京市朝阳区";
b.introduce();
}
}
运行结果:
从上面的运行结果可知:
(1)生成子类对象,调用子类的方法,生成父类对象,调用父类的方法。
(2)当在具有继承关系的父子类中,对父类的方法不满意,可以通过在子类中重写的方式进行修改。
覆盖注意事项:
(1)子类覆盖父类时,必须要保证覆盖方法的权限大于等于被覆盖的方法的权限。
(2)覆盖方法有静态修饰时,静态只能覆盖静态,或者被静态覆盖。在写法注意这个事项。