Java super关键字知识点详解
在Java中,super是一个关键字。它可以用于访问在父类中定义的属性、方法和构造函数。本文将详细讲解super关键字的知识点。
1. super用于访问父类的属性和方法
类继承是Java中重要的面向对象编程特性。子类继承父类,并且可以访问在父类中定义的属性和方法。
下面是一个简单的示例代码:
class Animal {
private String name;
Animal(String name) {
this.name = name;
}
public void printName() {
System.out.println("Animal name is " + name);
}
}
class Dog extends Animal {
Dog(String name) {
super(name);
}
public void printName() {
super.printName();
System.out.println("Dog name is " + super.name);
}
}
在这个示例中,Animal是一个父类,Dog是一个子类。Dog通过super关键字调用了父类Animal的构造函数,并且可以访问在父类中定义的私有属性name和方法printName。
当调用super.printName()时,实际上是调用了父类Animal中的printName()方法,并打印了“Animal name is”和子类Dog对象的name属性。
2. super用于调用父类的构造函数
在子类的构造函数中,如果没有显式地调用父类的构造函数,Java编译器会默认调用父类的无参构造函数。但是,如果父类没有提供无参构造函数,并且子类构造函数没有调用父类其他构造函数,编译器会报错。
示例代码如下:
class Animal {
private String name;
Animal(String name) {
this.name = name;
}
}
class Dog extends Animal {
Dog() { // 编译器报错:Implicit super constructor Animal() is undefined for default constructor. Must define an explicit constructor
}
}
因为Animal没有提供无参构造函数,所以在子类Dog中必须显式地调用父类的构造函数,使用super关键字。
示例代码如下:
class Animal {
private String name;
Animal(String name) {
this.name = name;
}
}
class Dog extends Animal {
Dog(String name) {
super(name);
}
}
在这个示例中,Dog的构造函数显式地调用了父类Animal的构造函数,并将name属性值传递给了父类的构造函数。
结论
在Java中,super关键字有两个主要的作用:访问父类的属性和方法,和调用父类的构造函数。明确了这些知识点,我们在Java中编写继承和多态性质的程序时可以更好的使用super关键字。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java super关键字知识点详解 - Python技术站