gpt4 book ai didi

java - 非抽象类中的抽象方法

转载 作者:行者123 更新时间:2023-12-02 02:00:41 29 4
gpt4 key购买 nike

如果我们有例如:

class Person {
// public void printInfos(){ }
}

class Student extends Person {
public void printInfos(){
System.out.println("studentInfos");
}
}

class Teacher extends Person(){
public void printInfos(){
System.out.println("teacherInfos");
}
}

main:
Person p1 = new Student();
Person p2 = new Teacher();

我想写: p1.printInfos() 和 p2.printInfos() 并打印“studentInfos”和“teacherInfos”,但除了在类 Person 中声明一个空方法之外,我找不到其他解决方案(因为我们可以不要将其声明为抽象并覆盖它,否则将无法实例化)。我觉得空方法的声明即使有效也是错误的。

最佳答案

您应该完全Person声明为接口(interface)。从逻辑上讲,Person 不应该被实例化。在这种情况下,定义新类和空体方法是多余的。

如果您坚持采用官方方法,那么除了定义新类之外,没有其他明智的方法可以做到这一点。

interface Person {
public void printInfos();
}

class Student implements Person {
@Override
public void printInfos(){
System.out.println("studentInfos");
}
}

class Teacher implements Person {
@Override
public void printInfos(){
System.out.println("teacherInfos");
}
}

main:
Person p1 = new Student();
Person p2 = new Teacher();

关于java - 非抽象类中的抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51635504/

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