首先创建一个父类,如下:
public class Fu {
public int a = 10;
public int f;
public void fu() {
System.out.println("Fu.fu()");
}
public void method() {
System.out.println("Fu.method()");
}
}
再创建一个子类并继承父类,如下:
public class Zi extends Fu{
public int a = 20;
public int z;
public Zi() {
super();
}
public void show() {
// //访问子类里面的成员变量(不同名)
// System.out.println(z);
// System.out.println(this.z);
//
// //访问父类里面的成员变量(不同名)
// System.out.println(f);
// System.out.println(this.f);
// System.out.println(super.f);
//访问子类和父类中同名的成员变量
System.out.println(a);//访问子类
System.out.println(this.a);//访问子类
System.out.println(super.a);//访问父类
}
public void zi() {
System.out.println("Zi.zi()");
}
public void method() {
System.out.println("Zi.method()");
}
public void test() {
//访问子类的方法
zi();
this.zi();
//访问父类的 方法
fu();
this.fu();
super.fu();
System.out.println("----------");
//调用父类里面的method方法
method();//调用子类method方法
this.method();//调用子类method方法
super.method();//调用父类的method方法
}
}
super关键字的三种用法:
super.父类成员变量
super.父类成员方法
super();调用父类构造方法
继承关系下,构造方法的访问特点:
a.在子类构造方法里面,如果没有显示的写,
则默认第一行写了一个super();
b.如果显示的写了一个super()[不论是否有参数],
则不再默认赠送super();
c.如果要显示的写,则super()[不论是否有参数]
必须是第一个语句;
d. super();这种写法必须写在子类的构造方法里面
super();调用父类的无参数的构造方法
创建子类对象的时候(调用子类构造方法),无论如何都会调用到父类的构造方法。
一个类如果没有显示的继承一个父类,则默认继承自Object顶级父类。
方法的覆盖重写:
a.在继承关系下
b.方法名相同、参数项相同
c.修饰符相同,参数项相同