2021-3-31-5 面向对象09:super关键词

super关键词可以和this关键词比较学习。
this关键词表示“这个类”/“这个对象”
super关键词则表示“这个类的父类”,所以super只能用在子类当中

代码

//Animal作为父类
public class Animal {
     String name = "动物";
}

//Cat作为子类,继承Animal
public class Cat extends Animal{
    private String name = "小黑";

    public void test(){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
}
//运行类
public class Application {
    public static void main(String[] args) {
        Cat xiaohei = new Cat();
        xiaohei.test();
    }
}

输出结果
2021-3-31-5 面向对象09:super关键词
属性和方法一样,父子同名的话,子想要调用父的东西就要用super关键字。如果不是同名的话,子可以直接调用就行了,不用super都行。

代码2

//Animal作为父类
public class Animal {
     String name = "动物";

     public void print(){
          System.out.println("动物print");
     }
}
//Cat作为子类,继承Animal
public class Cat extends Animal{
    private String name = "小黑";

    public void print(){
        System.out.println("猫print");
    }

    public void test2(){
        print();
        this.print();
        super.print();
    }
}
//运行类
public class Application {
    public static void main(String[] args) {
        Cat xiaohei = new Cat();
        xiaohei.test2();
    }
}

输出结果
2021-3-31-5 面向对象09:super关键词
调用父子同名方法,如果不用任何修饰词,默认调用本类的方法,想用父类的同名方法的话就要用super。如果不同名的话,是可以不用任何修饰词直接调用父类的方法的。

代码3

//Animal作为父类
public class Animal {
     String name2 = "动物";

     public Animal() {
          System.out.println("动物构造器work");
     }
}
//Cat作为子类,继承Animal
public class Cat extends Animal{
    private String name = "小黑";

    public Cat() {
        System.out.println("猫构造器work");
    }
}
//运行类
public class Application {
    public static void main(String[] args) {
        Cat xiaohei = new Cat();
    }
}

输出结果
2021-3-31-5 面向对象09:super关键词
实例化子类,父类和子类的构造器都会执行。

//Cat作为子类,继承Animal
public class Cat extends Animal{
    private String name = "小黑";

    public Cat() {
    	//其实这里有隐藏的代码
    	//super();
    	//所以它会去调用父类构造器
    	/*
    	super()父类的构造方法
    	this()子类的构造方法
    	*/
        System.out.println("猫构造器work");
    }
}
//Cat作为子类,继承Animal
public class Cat extends Animal{
    private String name = "小黑";

    public Cat() {
        System.out.println("猫构造器work");
        super();
        //这样写是错的,要么不写,它会默认把super()放到第一句。如果写出来了,就必须是第一句,不然报错
    }
}
上一篇:JavaSE-11.2.2【抽象类的成员特点】


下一篇:VUE -- 对 Element UI table中数据进行二次处理