首页 新闻 会员 周边 捐助

C#继承实现有点小疑惑

0
悬赏园豆:5 [已解决问题] 解决于 2017-11-22 14:22

class animal

{

public animal(){};

private string name;

public animal ( string name)

{

this.name=name;

}

public virtual void show()

{

console.writeln("我叫:{0}",name);

}

}

 

class people:animal

{

protected animal an;

punlic void decorate(animal an )

{

this.an=an;

}

public override void show()

{

.........

}

}

 

我不太明白

protected animal an;

punlic void decorate(animal an )

{

this.an=an;

}

写这段代码有什么作用

西码的主页 西码 | 初学一级 | 园豆:194
提问于:2017-01-23 10:10
< >
分享
最佳答案
1

初始化对象

收获园豆:5
悦光阴 | 老鸟四级 |园豆:2251 | 2017-01-23 10:36

嗯,,,protected animal an;这句是初始化,,但是

punlic void decorate(animal an )

{

this.an=an;

}

这段有什么作用,然后别的子类调用这个方法

西码 | 园豆:194 (初学一级) | 2017-01-23 13:14
其他回答(4)
0

构造函数和继承没什么鸟关系

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-23 10:29

额,我问的是,在子类继承父类时,子类中为什么要声明父类

protected animal an;

punlic void decorate(animal an )

{

this.an=an;

}

这段代码有什么作用

支持(0) 反对(0) 西码 | 园豆:194 (初学一级) | 2017-01-23 10:41

@西码: ...不好意思没看清楚. 

 子类中有父类对象实在是太正常了.至于作用你得问写代码的人

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-23 12:02
0

楼上正解,初始化an 

samirL | 园豆:188 (初学一级) | 2017-01-23 11:45
0

这是装饰者模式代码,去找资料吧

黄昏MMM | 园豆:320 (菜鸟二级) | 2017-01-23 15:26

嗯嗯。。。我就是再看装饰者模式的时候,看到这个部分有点小疑惑

支持(0) 反对(0) 西码 | 园豆:194 (初学一级) | 2017-01-23 15:28

@西码:

https://git.oschina.net/lishilei0523/GofWithEntityFramework

这里有一些我写的设计模式的例子

支持(0) 反对(0) 黄昏MMM | 园豆:320 (菜鸟二级) | 2017-01-23 15:32

@黄昏MMM: 

可以就这段代码作用解释下,就是这个部分有点疑惑

protected animal an;

punlic void decorate(animal an )

{

this.an=an;

}

支持(0) 反对(0) 西码 | 园豆:194 (初学一级) | 2017-01-23 15:38

@西码: this是主体,an是装饰对象,

可以理解为this是咖啡,an是糖,

decorate方法代表着为咖啡装饰糖

支持(0) 反对(0) 黄昏MMM | 园豆:320 (菜鸟二级) | 2017-01-23 15:44

@西码: 先把理论搞清楚再看代码

支持(0) 反对(0) 黄昏MMM | 园豆:320 (菜鸟二级) | 2017-01-23 15:48
0

装饰者模式的用途是对原方法/接口进行“装饰”,比如下面这个oracleConnection的CreateCommand方法不满足需求了,为了给cmd.BindByName = true;引入了装饰者模式,说白了有点“拦截”的意思,你可以体会下 https://github.com/shuxinqin/Chloe/blob/master/src/DotNet/ChloeDemo/OracleConnectionFactory.cs#L75

我叫So | 园豆:186 (初学一级) | 2017-01-23 19:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册