Java基础11(继承中关键字super和this)

        在了解完毕构造器之后,我们就知道关键字super和this的作用了

this

   在java中thiis关键字通常是指向对象本身,换句话说,this的本质就是‘创建完毕的对象的地址’,通过这个地址,你就可以查询到这个对象。

this的常用的几种方法

第一种: 当形参与成员名字重名时;用this代表当前当前类里的成员,没有用this代表形参。

public class test {
   public String name;
   public int age;

   public void t(String name , int age){
      this.name = name;
      this.age = age;
   }
}

 第二种:this指向对象本身。


public class A {
    public void test() {
        this.print();
    }
    private void print() {
        System.out.println("abc");
    }
    public static void main(String[] args) {
        A a = new A();
        a.test(); 
    }

第三种:

也是我们最常用的,调用构造函数,这是和super用法很相似的地方,所以和super一起说。

super

super在子类中使用时,会指向自己的父类对象,且是离自己最近的父类。

super的常用的几种方法

第一种:

        直接使用super.成员名,就可以直接调用父类中的成员。

public class test {
   public String name;
   public int age;

   public void t(String name , int age){
      this.name = name;
      this.age = age;
   }
}

class test1 extends test{
   public void t1(){
      System.out.println(super.name);
   }
}

第二种:

        当子类和父类的成员变量或方法同名时,可以用super来进行区别。

public class test {
   public String name;
}

class test1 extends test{
   public String name;
   public void t1(){
      System.out.println(name);
      System.out.println(super.name);
   }
   
}

第三种: 这个和上面this的一样,调用构造器,重点。

        super(参数):调用父类中的某一个构造器。

        this(参数): 调用子类中的某一个构造器。

public class Dome2 {
    public static void main(String[] args) {
        new W();
    }
}

class T{
    public T(){
        System.out.println("父类无参构造器");
    }
    public T(String name){
        System.out.println("父类有参构造器");
    }

    public void test(){
        System.out.println("父类test");
    }
}
class W extends T{

    public W(){
        this("a");
        System.out.println("子类无参数构造器");
    }
    public W(String name){
        super("a");
        System.out.println("通过子类调用---子类有参数构造器");
    }
    public void test(){ //更改的  方法的实现
        // 方法重写:方法名名相同参数相同
        System.out.println("重写----子类test");
    }
}

运行结果:

this和super注意事项 

  • this和super在构造方法第一行存在且只能有this或super中一个。
  • 当构造方法第一行既没有this也没有super关键字,则默认有一个无参的super。
  • this和super都是调用构造器,this是调用本类中构造器,super是调用超类中的构造器。
  • 当子类和超类中成员名重合时,super.成员名 代表超类中的成员名。
  • this()和super()都是指向指向对象,均不可在static环境下使用。
  • this实质是指向对象,而super是Java的一个关键字。

 请动动读者大大的小手手 关注一波 小小作者 帮忙涨涨粉丝 ,谢谢啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值