admin 管理员组文章数量: 887021
2024年1月17日发(作者:被cancel)
java的继承super用法
在Java中,继承是面向对象编程的一个重要概念。它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。在继承关系中,子类继承了父类的特性,并且可以添加自己的特性或覆盖父类的方法。
当子类继承父类时,super关键字经常被用来引用父类的属性和方法。super关键字有多种用法,下面将详细介绍每一种用法。
1. super( 构造器
在子类的构造器中,使用super(来调用父类的构造器。这是因为子类继承了父类的属性,需要通过调用父类的构造函数来初始化这些属性。super(的调用必须放在子类构造器的第一行。如果没有显式地调用super(,那么Java会自动隐式调用父类的默认构造函数。
2. super 关键字引用父类属性
在子类中,可以使用super关键字来引用父类的属性。这常常用于解决子类和父类有同名字段的冲突问题。通过super关键字,可以明确地指定引用的是父类的属性。
```
public class Animal
String name;
public Animal(String name)
= name;
}
public class Dog extends Animal
int age;
public Dog(String name, int age)
super(name); //调用父类的构造器来初始化name属性
= age;
}
public void displa
n( + " is " + age + " years
old."); //引用父类的name属性
}
public static void main(String[] args)
Dog dog = new Dog("Fido", 5);
y(; //输出 Fido is 5 years old.
}
```
3. super 关键字引用父类方法
子类可以通过super关键字来引用父类的方法。这可以用于在子类中对父类方法的功能进行扩展或重写。通过使用super关键字,可以在子类中调用父类的方法。
```
public class Shape
public void displa
n("This is a shape.");
}
public class Circle extends Shape
public void displa
y(; //调用父类的display方法
n("This is a circle.");
}
public static void main(String[] args)
Circle circle = new Circle(;
y(;
}
```
输出结果:
```
This is a shape.
This is a circle.
```
通过y(语句,子类Circle首先调用父类Shape的display方法,然后再添加自己的功能。
4. super 关键字调用父类的静态方法、变量和构造器
super关键字不仅可以引用父类的实例方法和属性,还可以引用父类的静态方法和变量。在子类中通过super关键字引用父类的静态方法和变量与调用父类的实例方法和属性类似。同样,调用父类的构造器也可以使用super关键字。
```
public class Parent
public static int x = 10;
public static void displa
n("y(");
}
public class Child extends Parent
public static int x = 20;
public static void displa
n("y(");
}
public void print
n(super.x); //引用父类的x变量
y(; //调用父类的display方法
}
public static void main(String[] args)
Child child = new Child(;
(; //输出 10 n y
}
```
在Child类中,通过super关键字引用父类的静态变量和静态方法。与实例方法不同,静态方法和变量不受对象的影响,所以super关键字指的是父类本身。
总结:
在Java中,super关键字用于在子类中引用父类的属性和方法。它有多种用法,包括调用父类的构造器,引用父类的实例方法和属性,调用父类的静态方法和变量等。super关键字在继承中起到了重要的作用,它使得子类能够访问和扩展父类的功能,从而实现了代码的复用和扩展性的提高。
版权声明:本文标题:java的继承super用法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705423055h484173.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论