我的应用程序中有几种不同类型的用户(不同的类)
User1
User2
等等......
我希望有一个抽象类“User”,它为所有类型的用户加入相同的方法
例如:getId(), getAge()....
我真的不知道它是如何工作的,但我想做的是:
User.setType(2); //a kind a constructor
User.getId()... //etc .. the getId() method of the Users2 class
无需实例化抽象类User
我该怎么做? 我遇到的问题是抽象类不能有静态方法......用户必须是静态的或单例我不知道什么是最好的。
有人能给我一些提示吗?
谢谢
答案 0 :(得分:1)
public abstract class User {
private int age;
private int id;
public int getAge() { return age; }
public int getId() { return id; }
}
public class User1 extends User { }
public class User2 extends User { }
User user1 = new User1();
user1.getId();
User user2 = new User2();
user2.getId();
无需实例化抽象类User
无法实例化抽象类。
用户必须是静态的或单身人士我不知道什么是最好的。
尽管抽象类可以使用静态方法,但这并不是很有意义(特别是当您需要抽象User
和多个特定类型的User
时)。
答案 1 :(得分:1)
我真的不知道它是如何工作的,但我想做的是什么 喜欢:...无需实例化抽象类User
您无法实例化抽象类。
我遇到的问题是抽象类不能有静态方法
是的,可以。
用户必须是静态的或单身人士我不知道什么是最好的。
是否只有一个User
实例?你的问题需要改进。究竟是什么问题?
答案 2 :(得分:0)
过滤 User1 和 User2 的常用方法。现在有一个抽象类用户,使用下面的常用方法
public abstract class User{
public void commonmethod1();
public void commonmethod2();
}
现在定义两个用户类User1和User2,它们应至少有一个额外的方法,如下面的
public class User1 extends User{
public void commonmethod1(){}
public void commonmethod2(){}
public void extramethod1(){}
}
public class User2 extends User{
public void commonmethod1(){}
public void commonmethod2(){}
public void extramethod12(){}
}
决定如何处理子类,单例限制对象的状态,有时它被视为反模式。
答案 3 :(得分:0)
最干净的事情是制作User
并界面和定义工厂类。这是一个版本(稍微滥用"工厂类"的概念),工厂作为静态类(它也可以定义为单例类):
public interface User {
int getId();
}
public class UserFactory() {
private final User sInstance;
public static void initFactory(int type) {
switch (type) {
case 1:
sInstance = new User1();
break;
case 2:
sInstance = new User2();
break;
default:
throw new IllegalArgumentException("error message");
}
}
public static User getUser() {
if (sInstance == null) {
throw new IllegalStateException("Must initialize factory first");
}
return sInstance;
}
private static class User1 implements User {
public int getId() {
. . .
}
}
private static class User1 implements User {
public int getId() {
. . .
}
}
}