我對java很陌生,想知道是否可以調用超類中的子類方法。如果要繼承,請在適當的地方設置public static void main。Java繼承:在超類中調用子類方法
超類
public class User {
private String name;
private int age;
public User() {
//Constructor
}
//Overloaded constructor
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public static void main(String []args) {
User user1 = new Admin("Bill", 18, 2);
System.out.println("Hello "+user1.getName());
user1.getLevel();
}
}
子類
public class Admin extends User {
private int permissionLevel;
public Admin() {
//Constructor
}
//Overloading constructor
public Admin(String name, int age, int permissionLevel) {
super(name, age);
this.permissionLevel = permissionLevel;
}
public void getLevel() {
System.out.println("Hello "+permissionLevel);
}
}
不,這是不可能的。一個班級無法知道是否或何時被分類。用戶並不總是管理員,而是管理員IS-A用戶。管理員可以調用父方法,但不能以其他方式進行調用,除非將用戶引用投射到管理員。 – duffymo
我養成了在所有「功能」類之外放置主要方法的習慣。在你的例子中,我會創建一個類'功能',它包含主要方法和你的兩個額外的類。如果你的程序可能有一天會提供與用戶無關的功能。最簡單的用例可能會顯示一個幫助文本 - 不適合User類,可以嗎? – bleistift2
一眼就看出來,爲了調用'user1.getLevel()',你需要像'Admin user1'那樣聲明'user1'或者像''((Admin)user1)那樣聲明'user1' .getLevel ()'。 –