学习
解决方案 »
- 怎样才能把俄罗斯方块做得很“青春活力”?
- 求救~~C#又出问题了。~还是 老问题啊。并非所有的代码路径都返回值
- c# winform 制作卸载程序问题
- Gridview在点击编辑时,如何使编辑模板的DropDownList显示出正确地值?
- checkbox结合gridview使用问题,请帮忙,谢谢!
- 添加了信息后子窗体就关闭 但是父窗体的gridview没有刷新
- 分隔符 转义符
- 如果利用C#.net 使一个运算程序在不同电脑分别运算出来?然后返回结果!
- C#中Font类的序列化问题
- 模拟input type=file 在谷歌浏览器上可以,IE 360要单击上传按钮两次
- 新手,请大家能否介绍一个C#开发的简单系统(有源码)可供学习的?谢谢
- 数据库的更新问题
public protected
abstract方法必須重寫才能使用。virtual方法本身是可以執行的﹐重寫是為了實現多態性。
NEW隐藏父类方法时,父类方法必須是public或protected
上面的回答不可吗?
abstract class Shape
{
abstract void Draw();
}
为啥abstract?你说Shape这东西是什么?它不是具体的方啊圆啊的,是个抽象的东西。没法给他实现什么。class Line : Shape
{
pubic virtual void Draw();
}
Class Circle : Shape ...Shape s1 = new Line(pt1, pt2);
s1.Draw(); // 会调用什么?
Shape s2 = new Circle(pt1, radius);
s2.Draw(); // 会调用什么?Shape[] arrShape = new Shape[10];
Shape[0] = new Line(pt1, pt2);
Shape[1] = new Circle(pt1, radius);
....
for(int i = 0; i < 10; i++)
arrShape.Draw(); // 不好玩吗?改成集合
ArrayList li = new ArrList();
li.Add(new Circle(pt1, radius));
li.Add(new Line(pt1, pt2);
...
foreach(Shape s in li)
s.Draw(); //不好玩吗?foreach(Shape s in li)
s.SaveToDisk(); //成不成?//UnDo
ClearScreen();
for(int i = 0; i < li.length -1; i++)
s.Draw(); //多好?后来又搞到了画方块的算法,想加进自己系统。只要满足什么条件就行?只要从Shape继承,实现Draw()就行啦。多好啊,用abstract让你的程序有了Potential可扩展性,性,嘿嘿。六角型是六个点,也许他能从画方块Rectangle类继承(不知道实际上是不是这样,管他呢,就当是吧)。Rectangle为什么要用virtual?六角型override它的Draw()提供了自己的方法,想一想,好不好玩?不好玩?abstract多TM好玩啊!
这个就是差别
abstract (有点接口的意思吧,反正是不知道要什么实现.实现有继承的单位去执行)
上面的人都已经回答好了啊
一个车Car,你定义了它的某个方法里实现了加速度为speed+=1;
你从这个Car类继承了自行车的轿车,并且override了加速度的方法。
自行车的加速度是speed+=5,轿车的加速度是speed+=20,挺合理的,好像。
不过,想想两个问题:
1。Car实现speed+=1有没有意义?实际上系统中我们从来不会调用它speed+=1的方法。实现它干吗?
2。假如继承类中没有实现(比如轿车忘了实现speed+=20)override,那么轿车会自动调用基类的方法speed+=1,轿车比自行车还慢,成何体统!
定义一个Car类,在它的某个方法里实现了加速度为speed+=1;
你从这个Car类继承了自行车和轿车,并且override了加速度的方法。
自行车的加速度是speed+=5,轿车的加速度是speed+=20,挺合理的,好像。
不过,想想两个问题:
1。Car实现speed+=1有没有意义?实际上系统中我们从来不会调用它speed+=1的方法。实现它干吗?
2。假如继承类中没有实现(比如轿车忘了实现speed+=20)override,那么轿车会自动调用基类的方法speed+=1,轿车比自行车还慢,成何体统!
定义一个抽象的"动物类",其中有一个"呼吸"的抽象方法(因为不同的动物可能有不同的呼吸方法,所以你不必马上实现这个方法),然后你可以派生出"两栖动物","哺乳动物"...这个时候,你就可以分别重写"呼吸"这个方法了.最后,好处来了:动物类 p1 = new 两栖动物();
动物类 p2 = new 哺乳动物();
p1.呼吸(); //看这里
p2.呼吸(); //看这里
还是继续"干"这个话题,比如男人要干的时候有时候要带TT,有时需要用BYY,有时候不用,抽象类中定义了男人"干"这个方法,但并没有定义"安全措施"这个方法
因为很多时候因为要爽,所以不使用"安全措施",但也有小心的人,那么"接口"浓重登场,在接口中定义"安全措施"这个方法,
至于是要用TT,还是BYY那就看个人喜好了,但是和尚和要成仙的楼主一辈子都不会干,那"安全措施"对他来说没用,
所以和尚和楼主就没有"安全措施"这个方法.
接口的概念通俗点说就是能让一个类实现多重继承,本来功能很单一的一个类,
可以通过接口的扩展来实现父类所不能实现的功能(比如:"安全措施")
:)