[英]Java: Calling a parent's method with child's member variable
假設我有一個抽象父類,它具有在方法中使用的成員變量。
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";
}
}
在 op 對代碼克隆的評論后更新...
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";
}
}
假設我有一個抽象的父類,該類具有在方法中使用的成員變量。
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()方法無法訪問子類的成員變量。
有什么方法可以調用父類的方法,但是讓該方法使用子類的成員變量?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.