gpt4 book ai didi

Java:使用子级的成员变量调用父级的方法

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

假设我有一个抽象父类,它具有在方法中使用的成员变量。

public abstract class Person{
public String jobTitle;
public void printJob(){
System.out.println(jobTitle);
}
}

如果我现在有两个子类

public class Teacher extends Person{
public String jobTitle = "Teacher";
}
public class Janitor extends Person{
public String jobTitle = "Janitor";
}

并且我想避免代码克隆,即在两个类中实现相同的 printJob() 方法,我现在遇到一个问题,因为 printJob() 方法无法访问子类的成员变量。

有什么方法可以调用父类的方法,但让该方法使用子类的成员变量吗?

最佳答案

您可以使用这样的抽象方法

public abstract class Person {
public void printJob() {
System.out.println(getJobTitle());
}

protected abstract String getJobTitle();

public static void main(String[] args) {
Person teacher = new Teacher();
Person janitor = new Janitor();

System.out.println(teacher.getJobTitle());
System.out.println(janitor.getJobTitle());
}
}

class Teacher extends Person {
@Override
protected String getJobTitle() {
return "Teacher";
}
}

class Janitor extends Person {
@Override
protected String getJobTitle() {
return "Janitor";
}
}

在运算符(operator)对代码克隆的评论后更新...

public class Person {
public static void main(String[] args) {
System.out.println(new Teacher().job);
System.out.println(new Janitor().job);
}

private static class Teacher extends Person {
private String job = "Teacher";
}

private static class Janitor extends Person {
private String job = "Janitor";
}
}

关于Java:使用子级的成员变量调用父级的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708954/

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