super是一个关键字,用于子类访问父类的属性方法与构造器,与this一样在调用构造器的时候两者由于java语法的强制要求,都需要放在第一行,所以当用this取调用子类的构造器是,无法在用super去调用父类的构造器,否则会报错
注意:在创建一个新对象的时候,即使未调用任何方法属性,也会调用子类与父类的隐形或显性构造器
应用类
package oop1.Demo5;public class Application {public static void main(String[] args) {Student s = new Student();//s.test("淑娜");//s.test1();s.print();}}
父类
package oop1.Demo5;
//在java中,所有的类,都直接或间接继承object
//人 父类
public class person /*extends Object*/{protected String name = "冰倩";//此处如果是private,则super也无法调用//私有的属性与方法无法被调用public void print(){System.out.println("b");}public person(String name) {System.out.println("Person无参执行");}
}
子类
package oop1.Demo5;//学生是人,即派生类,是人的子类
//子类继承父类就会继承父类的所有方法
public class Student extends person {private String name = "冰洁";public void test(String name){System.out.println(name);System.out.println(this.name);System.out.println(super.name);}public void print(){System.out.println("a");}public void test1(){print();this.print();super.print();}public Student() {//隐藏代码:调用父类的无参构造器super("压力");//调用父类的给构造器,必须在子类构造器的第一行System.out.println("Student无参执行了");}public Student(String name) {super(name);this.name = name;//this也只能在第一行,所以调用无参构造器要么父类要么子类}
}