Java-面向对象_super关键字

【1】super指的是:父类的

【2】super可以修饰属性,可以修饰方法;

 

在子类的方法中,可以通过super属性 super方法的方式,显示的去调用父类提供的属性,方法。在通常情况下,super可以省略不写:

代码:

子类:

public class Student extends Person{
    String name;

    
    public void eat() {
        System.out.println("调用的是子类的eat方法");
        System.out.println(super.age);//调用的是父类的age属性
        System.out.println(age);//与上面一样,super可省略不写
    }
}

父类:

public class Person {
    String  name;
    int age;
    
    
    public void eat() {
        System.out.println("调用父类的eat方法");
        
    }
    public void sleep() {
        System.out.println("调用父类的sleep方法");
    }
}

 

 

在特殊情况下,当子类和父类的属性重名时,你要想使用父类的属性,必须加上修饰符super.,只能通过super.属性调用

在特殊情况下,当子类和父类的方法重名时,你要想使用父类的方法,必须加上修饰符super.,只能通过super.方法调用

在这种情况下,super.就不可以省略不写

代码:

子类:

public class Student extends Person{
    String name;

    
    public void eat() {
        System.out.println("调用的是子类的eat方法");
        System.out.println(super.age);//调用的是父类的age属性
        System.out.println(age);//与上面一样,super可省略不写
    }
    
    public void name() {
        System.out.println(this.name);//this可省略 指的是本类
        System.out.println(name);
        System.out.println(super.name);//super指的是调用父类的name属性
    }
    public void t() {
        this.eat();//this可省略不写
        eat();
        super.eat();
    }
    
    public Student(String name) {
        this.name = name;
    }
    
    public Student() {
        
    }

}

父类:

public class Person {
    String  name;
    int age;
    
    
    public void eat() {
        System.out.println("调用父类的eat方法");
        
    }
    public void sleep() {
        System.out.println("调用父类的sleep方法");
    }
}

测试类:

public class Test {

    public static void main(String[] args) {
        Student student = new Student("子类");
        student.eat();
        student.name();
        student.t();

    }

}

 

运行:

 

posted @ 2021-02-28 01:29  别看我看路  阅读(61)  评论(0编辑  收藏  举报