我对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 ()'。 –