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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值