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(); } }
运行: