java 中super的使用

1,新建Application类,作为程序的入口

package oop.demo05;

//继承
public class Application {
    public static void main(String[] args) {

        /*
        先执行 父类的无参、在执行了类的无参
        Person 无参执行了
        Student 无参执行了
         */

        Student s1 = new Student();
        s1.say(); //说了一句话!!
//        System.out.println(s1.money);//1000000000 加了私有 修饰后,这个语句报错

        System.out.println("s1.getMoney():" + s1.getMoney()); //s1.getMoney():1000000000

        Student s2 = new Student();
        s2.Test("向向");

        s2.Test2();
    }
}

2,新建Person类

package oop.demo05;
/*
继承
 */
public class Person {
//    无参构造
    public Person() {
        System.out.println("Person 无参执行了");
    }

    public void  say(){
        System.out.println("说了一句话!!");
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    private   int money=10_0000_0000;

    /*
    public 公共的
    private 私有的
    default 默认的
    protected 受保护的
     */


    protected  String name="小小向";

    public void  print(){
        System.out.println("Person");
    }

    //私有和不能被继承
    private void  print2(){
        System.out.println("Person");
    }

}

3,新建Student类

package oop.demo05;

public class Student extends Person {
    public Student() {
//        隐藏代码,调用父类的无参构造
        super();
        System.out.println("Student 无参执行了");
    }

    private String name="小玉";

    public  void Test(String name){
        System.out.println("name:"+name);//向向
        System.out.println("this.name:"+this.name);//小玉
        System.out.println("super.name:"+super.name); // 小小向 ------------调父类;
    }

    public  void  print(){
        System.out.println("Student");
    }

    public  void  Test2(){
        print();//Student
        this.print();//Student
        super.print();//Person

//        super.print2(); //不能调用,私有的
    }


}

4,新建Teacher类

package oop.demo05;

public class Teacher extends  Person{
}

5,super使用

## super注意点
    1,super调用的是父类的构造方法,必须在构造方法的第一个
    2,super必须只能出现在子类的方法或者构造方法中
    2,super和this不能同时调用构造方法

##vs this:
    代表的对象不同:
        this 本身这调用者是这个对象
        super 代表父类对象的引用
    前提
        this 没有继承也可以使用
        super 只有在继承条件下才可以使用
    构造方法
        this() 调用的是本类的构造
        super() 调用的是父类的构造

6,运行结果

posted @ 2021-08-03 12:28  阿向向  阅读(685)  评论(0编辑  收藏  举报