什么时候定义抽象方法,为什么定义成抽象的,怎么定义
------解决方案--------------------------------------------------------
抽象方法就是把具体实现留给派生类,达到实现与意图的分离,其实也可以用接口来实现
------解决方案--------------------------------------------------------
抽象方法用于对象不需要或不能够实现却要求子类必须实现的场景...
例如...人.说话()方法,你构造“人”这个类时无法确定“人”如何说话,只有它的子类才能实现,如中国人.说话(){讲中文;}...俄国人.说话(){讲俄文;}...
------解决方案--------------------------------------------------------
关于什么时候定义抽象方法,楼主可以参考一下“模板方法模式”,我想你应该会从中得到启示。
------解决方案--------------------------------------------------------
建议用接口.
总之我也说不清楚为什么,看网上好多人都这么写代码.
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
当你定义一个基类,你想要求继承这个基类必须实现一个方法,而且你想在这个基类中使用这个方法时,那么这个方法可以定义成抽象方法。
接口只能要求继承这个接口实现方法,但因为它没有实现,所以他不能使用这个方法。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
有时候基类并不与具体的事物相联系,而是只表达一种抽象的概念,用以为它的派生类提供一个公共的界面,为此C#中引入了抽象类(abstract class)的概念。
对抽象类的使用有以下几点规定:
抽象类只能作为其它类的基类,它不能直接被实例化(不能使用new 操作符)
抽象类允许包含抽象成员,但这不是必须的;
抽象类不能同时又是密封的;
如果一个非抽象类从抽象类中派生,则其必须通过重写来实现所有继承而来的抽象成员
一个方法声明中如果加上abstract 修饰符我们称该方法为抽象方法(abstract method)。
如果一个方法被声明是抽象的,那么该方法默认也是一个虚方法。事实上抽象方法是一个新的虚方法,它不提供具体的方法实现代码
只能在抽象类中声明抽象方法
声明抽象方法只需要给出方法的原型
------解决方案--------------------------------------------------------
写个简单的小例子
- C# code
abstract class Animal{ public string name; public int age; public void Move() { Console.WriteLine(“动物都是可以动滴!!!”); } public abstract void Sound(); //抽象方法} class Dog :Animal //继承{ public int Legs=4; public override void Sound() { Console.WriteLine(“狗狗叫:汪!汪!汪!”); }} class Snake:Animal //继承{ public override void Sound() { Console.WriteLine(“蛇发出丝~~丝~~的声音”); }}class MyPet{ static void Main() { //Animal MyAnimal=new Animal();错误的,抽象类不能实例化 Dog MyDog=new Dog(); Snake MySnake=new Snake(); MyDog.name=“小白”; MyDog.age=5; MyDog.Sound(); MySnake.name=“斯内普”; MySnake.age=10; MySnake.Sound(); }}
------解决方案--------------------------------------------------------
抽象方法属于类,即当属于一类的时候用抽象类,例如卡车和小汽车都属于车,这是车类可以定义为抽象类,里面定义一些抽象方法供派生类实现。接口属于一种约束,当没有内部联系的时候,而是仅仅约束某个类要实现某种功能,这时候用接口。
------解决方案--------------------------------------------------------