package com.rgs; /** * super关键字: * 1.可以修饰属性和方法 * 2.在子类的方法中,可以通过 super.属性 super.方法的方式, * 显示的去调用父类提供的属性和方法。在通常情况下,super.可以省略不写 * 3.但在特殊情况下必须要写, * 比如: * 【1】:当子类的属性和父类重名时,想使用父类的属性就必须要使用 super.属性来进行调用 * 【2】:当子类的方法和父类重名时,想使用父类的方法就必须要使用 super.方法来进行调用 * super修饰构造器: * 1.一般情况下,我们写的构造器前面都会有一个super();所以我们一般省略不写 * 2.如果构造器中有了我们自己声明的super();后,系统就不会再给你分配super();了 * 3.一个构造器中只能有一个super();或者this();因为他们都是需要放在首行滴 */ public class Person { String name; int age = 10; public Person() { //super(); } public Person(String name,int age){ } public void eat(){ System.out.println("吃粑粑!"); } public void sleep(){ System.out.println("想睡觉好累..."); } }
package com.rgs; public class Student extends Person{ int score; int age = 20; public Student(){ //super(); } public Student(String s){ System.out.println("正在进行参数调用..."); } public Student(String name,int age){ super(name, age);//必须放在首行 // this("s");必须放在首行,所以一个构造器中只能有他俩其中之一 this.name = name; } public void study(){ System.out.println("在学习中、、、"); } public void a(){ System.out.println(age);//20 System.out.println(super.age);//10 super.eat(); eat(); } public void eat(){ System.out.println("正在吃狗粮!"); } }
package com.rgs; public class Test { public static void main(String[] args) { Student s = new Student(); s.a(); } }