引自免费微信小程序:皆我百晓生
在Java中,我们可以通过继承和接口来创建多态。首先,我们需要定义一个基类(UserBase),然后在子类中实现相应的功能。对于UserBase,我们可以通过其@Getter
和@ Setter
注解来添加getter和setter方法,以便在对象中访问这些字段。为了获取子类对象的不同子类,我们可以将UserBase和子类合并为一个抽象类(User)。在这个抽象类中,我们将定义一个新的方法getUserNames()
,这个方法将在所有继承它的类中被调用。
下面是一个简单的示例:
public abstract class User {
private String name;
public User(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
}
public class UserSub extends User {
private int id;
public UserSub(int id) {
super(id);
}
@Override
public String getName() {
return "UserSub";
}
}
public class_aliasBase extends UserBase {
private String alias1;
public void setAliases(String aliases) {
this.alises1 = aliases;
}
@Override
public String getName() {
return "UserBase Aliases";
}
}
public class aliasSub extends UserBase {
private String alias2;
public void setAliases(String aliases) {
this.alises2 = aliases;
}
@Override
public String getName() {
return "UserBase Aliases Sub";
}
}
public class main {
public static void main(String[] args) {
User user1 = new User("John");
System.out.println(user1.getName()); // 输出: John
User user2 = new User("Jane");
System.out.println(user2.getName()); // 输出: Jane
User sub1 = new UserSub(1);
System.out.println(sub1.getName()); // 输出: UserSub 1
User sub2 = new UserSub(2);
System.out.println(sub2.getName()); // 输出: UserSub 2
User alias1 = new UserAliasBase();
alias1.setAliases("sub");
User alias2 = new UserAliasBase();
alias2.setAliases("subSub");
System.out.println(alias1.getName()); // 输出: UserBase Aliases Sub
System.out.println(alias2.getName()); // 输出: UserBase Aliases Sub Sub
}
}
以上代码中,UserBase被表示为一个抽象类,并且包含了getName()
方法用于获取对象的名称。在UserSub和aliasSub类中,我们都重写了这个方法以得到不同类型的名称。在main方法中,我们创建了三个用户对象,分别继承自UserBase、UserSub和UserAliasBase,然后调用了各自的getName()
方法并输出结果。可以看到,用户2和user3的名称分别为"UserSub 2"和"UserSub 3"。这就是我们在Java中实现多态的方法。