猿教程 Logo

Java super关键字

java中的super关键字是一个引用变量,用于引用直接父类对象。

每当创建子类的实例时,父类的实例被隐式创建,由super引用变量引用。


java super关键字的用法

  1. super可以用来引用父类的实例变量。

  2. super可以用来调用父类方法。

  3. super()可以用于调用父类构造函数。


1)super用于引用直接父类实例变量。

我们可以使用super关键字来访问父类的数据成员或字段。 如果父类和子类具有相同的字段,则使用它。

相关实例:

class Animal{
String color="white";
}
class Dog extends Animal{
String color="black";
void printColor(){
System.out.println(color);//prints color of Dog class
System.out.println(super.color);//prints color of Animal class
}
}
class TestSuper1{
public static void main(String args[]){
Dog d=new Dog();
d.printColor();
}}

输出:中

black
white

在上面的例子中,Animal和Dog都有一个共同的属性颜色。 如果我们打印color属性,它将默认打印当前类的颜色。 要访问父属性,我们需要使用super关键字。


2)super可以用来调用父类方法

super关键字也可以用于调用父类方法。 如果子类包含与父类相同的方法,则应使用它。 换句话说,如果方法被覆盖,则使用它。

相关实例:

class Animal{
void eat(){System.out.println("eating...");}
}
class Dog extends Animal{
void eat(){System.out.println("eating bread...");}
void bark(){System.out.println("barking...");}
void work(){
super.eat();
bark();
}
}
class TestSuper2{
public static void main(String args[]){
Dog d=new Dog();
d.work();
}}

输出:

eating...
barking...

在上面的例子中,Animal和Dog两个类都有eat()方法,如果我们从Dog类中调用eat()方法,它将默认调用Dog类的eat()方法,因为优先级是局部的。

要调用父类方法,我们需要使用super关键字。


3)super用于调用父类构造函数。

super关键字也可以用于调用父类构造函数。 让我们看一个简单的例子:

相关实例:

class Animal{
Animal(){System.out.println("animal is created");}
}
class Dog extends Animal{
Dog(){
super();
System.out.println("dog is created");
}
}
class TestSuper3{
public static void main(String args[]){
Dog d=new Dog();
}}

输出:

animal is created
dog is created

注意:如果没有super()或this(),super()在每个类构造函数中由编译器自动添加。


我们知道,如果没有构造函数,默认构造函数由编译器自动提供。 但是,它还添加了super()作为第一个语句。

super关键字的另一个例子,其中super()由编译器隐式提供。

相关实例:

class Animal{
Animal(){System.out.println("animal is created");}
}
class Dog extends Animal{
Dog(){
System.out.println("dog is created");
}
}
class TestSuper4{
public static void main(String args[]){
Dog d=new Dog();
}}

输出:

animal is created
dog is created

super示例:实际使用

让我们来看看super关键字的真正用法。 在这里,Emp类继承Person类,所以Person的所有属性都将默认继承到Emp。 要初始化所有的属性,我们使用子类的父类构造函数。 这样,我们重用了父类的构造函数。

相关实例:

class Person{
int id;
String name;
Person(int id,String name){
this.id=id;
this.name=name;
}
}
class Emp extends Person{
float salary;
Emp(int id,String name,float salary){
super(id,name);//reusing parent constructor
this.salary=salary;
}
void display(){System.out.println(id+" "+name+" "+salary);}
}
class TestSuper5{
public static void main(String[] args){
Emp e1=new Emp(1,"ankit",45000f);
e1.display();
}}

输出:

1 ankit 45000


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/java-super-keyword.html