日期:2014-05-19  浏览次数:20475 次

初问~设计~~~只为目的。。
有一个类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,可是怎么觉得完全是反着来的呢?
破破说说...