super关键字

1.子类重写了父类的变量

利用super关键字可以调用父类的变量

class F{
    String name = "张三";//父类的变量
}
class S extends F{
    String name = "张三丰";//子类重写父类的变量
    void setName(){
        System.out.println("父亲的名字为"+super.name);//显示父类的变量
        System.out.println("儿子的名字为"+name);
    }
}
public class Test2 {
    public static void main(String[] args) {
        S s = new S();
        s.setName();
    }
}
//   结果:
//       父亲的名字为张三
//       儿子的名字为张三丰

2.子类重写了父类的方法

用super关键字调用父类中与子类同名的方法

class F{
    String name1 = "张三";
    void setName(){//父类的方法
        System.out.println("父类:"+name1);
    }
}
class S extends F{
    String name2 = "张三丰";
    void setName(){//重写了父类的方法
        System.out.println("子类:"+name2);
        super.setName();//调用了父类的方法
    }
}
public class Test2 {
    public static void main(String[] args) {
        S s = new S();
        s.setName();
    }
}
//    结果:
//       子类:张三丰
//       父类:张三

3.在子类的构造函数中调用父类的构造方法

在调用子类构造函数之前会先调用父类的构造函数,给从父类中继承的变量赋值

所以在子类构造函数的第一句那里会默认(不显示)的利用super()来调用父类中的构造函数

super();语句只能写在第一行

//super();调用无参构造函数

class F{
    String name1 = "张三";
    public F(){
        System.out.println("我是父类无参的构造函数");
    }
    F(int n) {
        for (int i = 0;i>n;i++){
            System.out.println("我是父类有参的构造函数");
        }
    }
}
class S extends F{
    String name2 = "张三丰";
    public S(){
       super(); //不用写,默认调用
        System.out.println("我是子类构造函数");
    }
}
public class Test2 {
    public static void main(String[] args) {
        S s = new S();
    }
}
//    结果:
//        我是父类无参的构造函数
//        我是子类构造函数
//super(参数);调用无参构造函数
class F{
    String name1 = "张三";
    F(){
        System.out.println("我是父类无参的构造函数");
    }
    F(int n) {
        for (int i = 0;i<n;i++){
            System.out.println("我是父类有参的构造函数");
        }
    }
}
class S extends F{
    String name2 = "张三丰";
    S(){
       super(2); //调用父类构造函数
        System.out.println("我是子类构造函数");
    }
}
public class Test2 {
    public static void main(String[] args) {
        S s = new S();
    }
}
//    结果:
//        我是父类有参的构造函数
//        我是父类有参的构造函数
//        我是子类构造函数
posted on 2021-03-25 22:18  月下伊独舞  阅读(35)  评论(0编辑  收藏  举报