gpt4 book ai didi

Java继承和覆盖方法

转载 作者:搜寻专家 更新时间:2023-11-01 01:03:56 25 4
gpt4 key购买 nike

我刚开始学习继承,但遇到了一个简单的问题。我想用子类 two 中的新语句覆盖 one 类中的 print() 语句。我不确定我将如何处理它,因为它是一个没有参数的 void 语句。

  public class One {

private String name;
private int age;

public human(String n, int a)
name = n;
age = a;
}
public void print() {

System.out.println("Name: " + name);
System.out.println("Age: " + age);

}

第二类:

    public class Two extends One {

private double gpa;

public two(String n, int a, double g) {
super(n,a);
gpa = g;

public double getGPA (){
return gpa;
}

public void print() {
// override code here to include code from class one + displaying GPA..

}
}

例如,example.print() 将打印

Name: Jack
Age: 34

我想要的期望输出是

Name: Jack
Age: 34
GPA: 3.20

我想我必须使用 super 方法,但找不到正确合并它的方法。任何提示将不胜感激!

最佳答案

关键字 super 使您可以访问父类(super class)的(可见)成员。所以,你可以调用父类(super class)的 print() 方法,然后只做子类的具体工作:

public void print() {
super.print();
System.out.println ("GPA: " + gpa);
}

有关 super 用法的更多信息,请参阅 Java 教程的这个简短部分:Using the Keyword super .它确实通过一个简单的示例解决了您所问的相同问题。

请注意,如果你写了

public void print() {
print();
System.out.println ("GPA: " + gpa);
}

如果不指定要调用 super.print()twoprint() 方法将无限期地调用自身,直到你遇到了 OutOfMemoryError

同样值得注意的是 Vash 提到的 @Override his answer 中的注释.

关于Java继承和覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15784099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com