初问~设计~~~只为目的。。
有一个类Pme含属性fme
这个的子类Pme_CN重写fme属性
目的:
现在Pme pp = new Pme() (我理解成,为Pme pp = new Pme_CN()解偶合)
让pp.fme为子类Pme_CN重写后的结果
问:
Pme类如何设计(有没有可参考的相关设计模式?)
是自己突然间的一个想法~~给点见意
~~有没有人知道这类帖子往哪转..
----------------------(谁让偶在这个版的人缘好呢~~嘿嘿)
------解决方案--------------------在每个版面里发一遍
------解决方案--------------------数据库里也能重载?
------解决方案--------------------我再多发几个社区,比如C++,Java......
------解决方案--------------------问题太过模糊了
重写是什么概念?
好像有个概念叫重载
应该可以
Pme pp = new Pme_CN()
------解决方案--------------------你的要求和你平时的表现一样有点怪怪的,反过来了
在你
Pme ppp = new Pme()
的时候,应该都不知道Pme有子类Pme_CN或者多个子类比如Pme_CN和Pme_EN,在不重载的情况下要求它返回子类的属性,貌似有点缘木求鱼
------解决方案--------------------正常情况是
Pme pp
set pp = new Pme_CN()
pp.MeFon() //1
...
set pp = new Pme()
pp.MeFon() //2
//1 //2返回是不同的
------解决方案--------------------这不是典型的多态吗,父类指针可以指向派生类,在父类搞个虚函数,如Getfme(方法),子类也实现这个方法
Pme pp = new Pme_CN();
pp.Getfme(方法)
就是调用用子类了方法了
------解决方案--------------------帮你顶
自己的要求比较特殊(好像也不符合常理,也不符合OOP),别人不理解是正常的
做人要厚道,做提问者更应该more些...
------解决方案--------------------貌似可以这样设计
class Pme
{
public Pme()
{}
public virtual string MeFon()
{
return "pme ";
}
public string GetFon(Pme p)
{
get
{
return p.MeFon()
}
}
}
以参数传回实例
------解决方案--------------------我砍砍。。。
------解决方案-------------------- 其实不模糊~~~因为是sql版~所以只写了术语~~override重写是封装~~重载是多态~~
-------偶有试探sql版有没有藏程序设计高手的嫌疑.....
Pme pp = new Pme_CN()
pp.MeFon()是我要的东西~~~~
可是我的最终要求是
Pme ppp = new Pme()
........
最后pp.MeFon()==pp.MeFon()
为了这样一个要求~~~而去设计我的父类~Pem...
--------------------------------
我理解能力出问题了么?怎么感觉摸不到头脑了?
偶最近学习OO,可是怎么觉得完全是反着来的呢?
破破说说...