我有几个不同类型的用户(不同类别)在我的应用程序的Java抽象类的提醒
User1
User2
等等
我想有一个抽象类,“用户”是加入相同所有类型用户的方法 例如:getId(), getAge()....
我真的不知道如何工作,但我想要做的是一样的东西:
无需实例化抽象类用户
我该怎么做? 我的问题是,抽象类不能有静态方法...和用户必须是静态或单身我不知道什么是最好的。
任何人都可以给我一些提示?
谢谢
我有几个不同类型的用户(不同类别)在我的应用程序的Java抽象类的提醒
User1
User2
等等
我想有一个抽象类,“用户”是加入相同所有类型用户的方法 例如:getId(), getAge()....
我真的不知道如何工作,但我想要做的是一样的东西:
无需实例化抽象类用户
我该怎么做? 我的问题是,抽象类不能有静态方法...和用户必须是静态或单身我不知道什么是最好的。
任何人都可以给我一些提示?
谢谢
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
实例?你的问题需要改进。你的问题到底是什么?
是的,应用程序运行时只有一个用户实例。对不起我可怜的英语 – 2012-01-11 05:00:15
没问题。如果只有一个实例使用Singleton模式。你可以在维基百科上找到它。 – 2012-01-11 05:26:05
考虑通过工厂返回正确类型的用户的单例模式。 – 2012-01-11 05:31:00
筛选常见方法用户1和用户2。现在有常用的方法一个抽象类,用户如下面
public abstract class User{
public void commonmethod1();
public void commonmethod2();
}
现在定义两个用户类用户1和用户应该有ATLEAST一个额外的方法像下面一样
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(){}
}
决定如何处理的子类,单限制的对象的状态,有时它被当作反面模式。
最干净的事情是制作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() {
. . .
}
}
}
抽象类可以有静态方法;它只是不能有抽象的静态方法。你想做什么?你的意思是每个用户的子类型是单身? (也就是说,最多只有一个'User1'对象;最多只有一个'User2'对象;等等?) – 2012-01-11 04:49:35
只有一个单例是“User”。它会根据情况实例化(可能是User1或User2等)。之后,应用程序期间无法再回来。用户被定义并且它的方法适合于它的实例化。 – 2012-01-11 04:55:58
制作'User'摘要有什么问题,给它提供像getId这样的实例方法,然后让'User1'等扩展它?你需要访问User的子类可能覆盖的方法的实现吗? – 2012-01-11 04:57:13