JiveJdon Community Forums
在线184人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 3 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
red_mark

发表文章: 3
注册时间: 2004年10月13日 13:47
给他发消息
static方法在继承中如何使用? 发表: 2004年10月13日 14:32 回复
我有这样一些类
父类:
public abstract class Base {
public static Base T(String param){
?????
ret.f(param);
return ret;
}
public abstract void f(String param);
}

子类:
public class AAA extends Base{
private String data;
public void f(String param) {
data="AAA's"+param;
}
}
子类:
public class CCC extends Base {
private String data;
public void f(String param) {
data="CCC's"+param;
}
}

调用:
public class Test {
public static void main(String[] args) {
AAA a = (AAA) AAA.T("orange");
CCC c = (CCC) CCC.T("apple");
}
}

我现在想问的问题是
1. AAA.T()和CCC.T()是从Base继承过来的,这样用是否符合常理?
2. 在Base.T()中能不能得知是通过哪个类调用过来的,并通过该信息创建该子类的实例,调用子类覆盖的方法f(),最后返回该子类?
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
Re: static方法在继承中如何使用? 发表: 2004年10月18日 15:38 回复
1.可以用。不符合常理。
2.不能得知是通过哪个类调用过来

其实你可以将Base.T()方法独立出来,使用工厂模式实现你的目的。
red_mark

发表文章: 3
注册时间: 2004年10月13日 13:47
给他发消息
Re: static方法在继承中如何使用? 发表: 2004年10月20日 14:24 回复
多谢banq指点
iihorse

发表文章: 5
注册时间: 2004年12月31日 22:35
给他发消息
Re: static方法在继承中如何使用? 发表: 2004年12月31日 22:59 回复
1.首先使用static修饰,则表示方法与类实例无关,请仔细考量是否必要!

2."在Base.T()中能不能得知是通过哪个类调用过来的"这种事情在OO中应该尽量不出现,这里可以使用Templet method来处理.或者参考banq所说使用工厂来做!感觉你的这个结构比较别扭,如果是项目中使用的代码,最好重构一下!^+^

Templet method的参考代码如下:
public abstract class Base{
public Base xxx(){
Base b = this.getX();
b.f(param);
return b;
}

public abstract f(String param);

public abstract Base getX();
}

public class AAA extends Base{
public f(String param){

}

public Base getX(){
AAA a;
...;
return a;
}
}

这个主题有 3 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam