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也只能在第一行,所以调用无参构造器要么父类要么子类
    }
}
posted @ 2025-09-26 11:09  冰涿  阅读(10)  评论(0)    收藏  举报