Day22super详解
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也只能在第一行,所以调用无参构造器要么父类要么子类
}
}

浙公网安备 33010602011771号