我们知道基类何时被称为继承的派生类继承,以及派生类何时包含相同的方法名称,返回类型和参数列表,就像基类的方法重写一样。 而且我们也知道super关键字可用于调用基类方法。如果派生类包含与基类相同的方法,则应使用它。换句话说,如果方法被覆盖,则使用它。
但是我的代码无法正常运行,为什么????请帮助我..........
public class person {
String name = "Mohan";
int age = 24;
void displayInformation() {
displayInformation();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
public class teacher extends person {
String qualification = "B.Sc in CSE";
@Override
void displayInformation() {
super.displayInformation();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Qualification: " + qualification);
}
}
public class MethodOverriding {
public static void main(String[] args) {
teacher t = new teacher();
t.displayInformation();
}
}
答案 0 :(得分:2)
您的理解是正确的。在person
的代码中有一个错误:
void displayInformation() {
displayInformation();
您指导方法displayInformation
首先调用方法displayInformation
,后者首先调用方法displayInformation
,首先调用方法displayInformation
(...)。
您将最终陷入异常。
在类displayInformation
中删除person
的调用,该异常将消失。
答案 1 :(得分:0)
我猜想不是这个:
@Override
void displayInformation() {
super.displayInformation();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Qualification: " + qualification);
}
您想要的:
@Override
void displayInformation() {
super.displayInformation();
System.out.println("Qualification: " + qualification);
}
否则,姓名和年龄打印两次。一次调用父类方法,然后再次在子类实现中。
答案 2 :(得分:0)
public class person {
String name = "Mohan";
int age = 24`enter code here`;
void displayInformation()
{
//displayInformation();
System.out.println("Name: " +name);
System.out.println("Age: " +age);
}
}
public class teacher extends person{
String qualification = "CSE";
@Override
void displayInformation()
{
super.displayInformation();
System.out.println("Name: " +name);
System.out.println("Age: " +age);
System.out.println("Qualification: " +qualification);
}
}
public class teacher extends person{
String qualification = "CSE";
@Override
void displayInformation()
{
super.displayInformation();
System.out.println("Name: " +name);
System.out.println("Age: " +age);
System.out.println("Qualification: " +qualification);
}
}
public class MethodOverriding {
public static void main(String[] args) {
teacher t = new teacher();
t.displayInformation();
}
}