21xrx.com
2024-12-23 03:05:31 Monday
登录
文章检索 我的文章 写文章
我想分享一下在Java编程中经常用到的超类关键字——super
2023-06-11 04:09:13 深夜i     --     --

我想分享一下在Java编程中经常用到的超类关键字——super。

super是Java语言中的一个关键字,表示当前对象的父类对象。它主要用于以下两个场景:

1.调用父类构造方法

在子类中,如果需要调用父类的构造方法,就需要使用super关键字。这是因为在Java中,没有显式调用父类构造方法的话,系统会默认调用父类的无参构造方法。如果父类没有提供无参构造方法,那么子类就会无法编译通过。

下面是一个例子:


public class Animal {

  public Animal(String name) {

    System.out.println("Hello, I am " + name);

  }

}

public class Cat extends Animal {

  public Cat(String name) {

    super(name);

    System.out.println("I am a cat");

  }

}

public class Test {

  public static void main(String[] args) {

    Cat cat = new Cat("Kitty");

  }

}

输出结果为:


Hello, I am Kitty

I am a cat

可以看到,在Cat的构造方法中,首先调用了父类Animal的构造方法,然后再输出“我是一只猫”。

2.调用父类的非私有成员变量和方法

当子类中定义了和父类同名的成员变量或方法时,如果需要在子类中访问父类的同名成员变量或方法,就需要使用super关键字。在这种情况下,super用于区分子类和父类的成员变量和方法。

下面是一个例子:


public class Animal {

  public String name = "Animal";

  public void speak() {

    System.out.println("I am an animal");

  }

}

public class Cat extends Animal {

  public String name = "Cat";

  public void speak() {

    System.out.println("I am a cat");

  }

  public void speakLikeAnimal() {

    super.speak();

  }

  public void showName() {

    super.name = "Animal";

    System.out.println(super.name);

    System.out.println(this.name);

  }

}

public class Test {

  public static void main(String[] args) {

    Cat cat = new Cat();

    cat.speakLikeAnimal();

    cat.showName();

  }

}

输出结果为:


I am an animal

Animal

Cat

可以看到,在Cat的speakLikeAnimal方法中,调用了父类Animal的speak方法,输出“I am an animal”。在cat的showName方法中,先使用super关键字给父类的name成员变量赋值,然后再输出父类和子类的name成员变量的值,分别为“Animal”和“Cat”。

综上所述,Java中的super关键字主要用于子类访问父类的构造方法、成员变量和方法。使用super关键字可以更好地区分子类和父类的成员变量和方法,以及方便地调用父类的构造方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复