怕什么真理无穷

导航

关于super关键字的简单理解

class Animal{
    String name="动物";
    void shout(){
        System.out.println("动物发出的叫声");        
    }
}

class Dog extends Animal{
    String name="犬类"; //重写了父类的成员变量
    void shout(){
        super.shout();//访问了父类的成员方法shout()
    }
    void printName(){
        System.out.println("name="+super.name);//如果不是用super,这里得到的值应该是重写的name:犬类,但是用了supper,则会是:动物
    }
}

public class Example14{
    public static void main(String[] args){
        Dog dog= new Dog();
        dog.shout();//调用的是父类的打印“动物发出的叫声”
        dog.printName();//虽然子类重写了父类成员变量,但由于super关键字的存在,这里仍是“动物”
    }
}
//在构造方法中的使用
class Animal{
    public Animal(String name){ //构造方法,方法名与类名同,有参
        System.out.println("我是一名"+name);
    }
    
    public Animal(){//无参的构造方法
        System.out.println("我是一名惭愧的人");
    }
}

class Dog extends Animal{
    public Dog(){
        super("惭愧书生");//通过super可调用构造方法并传入参数。必须在第一行,并且只能出现一次
    }
    
    /*public Dog(){
        
    }*/  //这么写会默认调用无参的构造方法,结果就是无参的结果
}
public class Example15{
    public static void main(String[] args){
        Dog dog=new Dog();//构造方法实例化直接会调用方法,打印结果
    }
}

 

posted on 2021-01-29 23:34  惭愧书生  阅读(38)  评论(0编辑  收藏  举报