java学习——super和this

构造器(构造函数)

子类不能继承父类的构造器(构造方法或者构造函数),如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

package test_script;
class SuperClass{
    SuperClass(){
        System.out.println("SuperClass()");
    }
    SuperClass(int n){
        System.out.println("SuperClass(int n)");
    }
}
class SubClass extends SuperClass{
    private int n;
    SubClass(){
        super(300);
        System.out.println("SubClass()");

    }
    SubClass(int n){
        System.out.println("SubClass(int n):"+n);
        this.n=n;
    }
}

public class TestSuperSub {
    public static void main(String[] args){
        SubClass sc=new SubClass();
        SubClass sc1=new SubClass(200);
    }
}

运行结果:

SuperClass(int n)  //通过super(300)调用了父类的有参构造器
SubClass()
SuperClass()      //系统自动调用了父类的元参构造器
SubClass(int n):200

2、super和this:

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

this关键字:指向自己的引用。

package test_script;

class Animal{
    void eat(){
        System.out.println("animal:eat");
    }
}
class joy extends Animal{
    void eat(){
        System.out.println("dog:eat");
    }
    void eatTest(){
        this.eat(); //指向自己的引用
        super.eat();//我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类
    }
}

public class Test {
   public static void main(String[] args){
       joy j=new joy();
       j.eatTest();
   }
}

运行结果:

dog:eat
animal:eat

猜你喜欢

转载自blog.csdn.net/weixin_39430584/article/details/82593812
今日推荐