类数组
新建一个类数组之后,可以重写原来的类方法吗?
public class a
{
public static void main(String args[])
{
b p[]=new b[26];
for (int i=0;i<26;i++)
p[i]=new b();
}
}
interface pub
{ void p1();}
class b implements pub
{public void p1(){ System.out.println("******");}
}
比如我想让p[1]的p1()方法重写为System.out.println("........")怎么写?
问题点数:20、回复次数:11Top
1 楼Dan1980()回复于 2005-04-01 11:31:31 得分 5
没有继承, 哪来重写?
创建一个新的类c, 让c继承b, 在c里面重写p1(), 然后再把p[1]声明为c的实例就行了.Top
2 楼DreamDragon_NEU(梦龙)回复于 2005-04-01 11:35:18 得分 5
p[1]是一个对象,难道对象可以重写实例化它的类的方法,不太可能吧
不知道楼主想有什么样的实际用途
不过楼主可以考虑为b类定义不同的p1方法,然后在由传入不同的参数实现~~~
Top
3 楼haisenmai(我应该做得到)回复于 2005-04-01 11:40:46 得分 0
我想让一系列类为pub 接口设计出不同的方法 这些类放到一个数组里面 看来p[]是一个对象数组不是类数组 对吗?Top
4 楼DreamDragon_NEU(梦龙)回复于 2005-04-01 11:43:28 得分 0
是的~~~
因为你已经进行实例化了 p[i]=new b();
Top
5 楼haisenmai(我应该做得到)回复于 2005-04-01 11:46:50 得分 0
有类数组吗?怎么实现啊Top
6 楼DreamDragon_NEU(梦龙)回复于 2005-04-01 11:56:13 得分 0
设计模式里有,不过最近好就没看了
楼主再问问别人吧~~~Top
7 楼Dan1980()回复于 2005-04-01 11:56:59 得分 5
不明白什么叫"类数组".
根据楼主所说:
-----------------------------------
我想让一系列类为pub 接口设计出不同的方法 这些类放到一个数组里面 看来p[]是一个对象数组不是类数组 对吗?
-----------------------------------
完全可以用多态实现啊.
interface Pub {
void p1();
}
class A implements Pub {
public void p1() {
System.out.println("A.p1()");
}
}
class B implements Pub {
public void p1() {
System.out.println("B.p1()");
}
}
public class Test {
public static void main(String args[]) {
//声明类型为接口Pub的数组
Pub[] pub = new Pub[2];
pub[0] = new A(); //将new A()向上转型为Pub
pub[1] = new B(); //将new B()向上转型为Pub
}
}
Top
8 楼haisenmai(我应该做得到)回复于 2005-04-01 17:16:31 得分 0
我的意思是
class A implements Pub {
public void p1() {
System.out.println("A.p1()");
}
}
class B implements Pub {
public void p1() {
System.out.println("B.p1()");
}
}
这样分别声明类A,B太麻烦了 因为接口里面有好多方法 而且要声明的类也好多 能不能一下子搞出好多类 就象数组一样 把A,B划到一个数组里面去啊 就象pub[]一样
Top
9 楼milkbottle(奶瓶->好好学习,天天向上)回复于 2005-04-01 17:47:07 得分 5
数组是不行的, 不过容器可以, 比如 ArrayList, Vector 都可以不容的类事例。
但是你要想批量定义不同的类,那是做不到的。
建议你先定义一个父类,把大多数共有的方法先实现了, 然后再有子类继承他,复写一下自己的方法,就少了很多重复的代码了Top
10 楼WinFastNcr(随她去吧!)回复于 2005-04-01 18:08:14 得分 0
顶Top
11 楼haisenmai(我应该做得到)回复于 2005-04-01 18:59:44 得分 0
thanksTop




