C#面向对象_抽象类

抽象类用来描述现实生活中的期望、计划、规则等等抽象的事物。它是指在规划中但还没有成为现实的事物。

 

先看实例:

class Program

         {

                   static void Main(string[] args)

                   {

                            starBucks one = new starBucks(); //实例化

                            one.磨咖啡(); 

                            one.卖咖啡();

                   }

         }

         abstract class dreamcoffeeshop  //创建抽象类

         {

                   abstract public void 磨咖啡(); 

                   abstract public void 卖咖啡();

         }

         //抽象类本身不能实例化对象,它唯一的作用就是被子类继承并且实现。

         class starBucks : dreamcoffeeshop                //继承并实现

         {

                   public override void 卖咖啡()

                   {

                            Console.WriteLine("天天起床卖咖啡!");

                   }

                   public override void 磨咖啡()

                   {

                            Console.WriteLine("磨咖啡呀磨咖啡,我磨磨磨磨磨!");

                   }

         }

 

语法:

[访问修饰符] abstract class 类名

{

         抽象方法(只是抽象的一个描述,没有具体的实现过程); //比如:abstract public void 磨咖啡();

}

 

注意

1、  抽象类中,可以有字段,但是字段不能为抽象abstract.

2、   如果必须使用抽象来定义变量,可以使用属性。

. abstract class robot
         {
                 public abstract string name { get; set; }
         }

3、  抽象类只能被继承,不能直接实例化对象。

4、  抽象类中的抽象方法,必须在子类中全部重写并实现。

5、  抽象类中的抽象成员,不能是私有的,因为他必须被子类继承。

6、  抽象类中允许存在非抽象成员。

7、  子类重新并实现抽象成员的时候,必须用override来覆盖实现。

。     class Program

         {

                   static void Main(string[] args)

                   {

                            now one = new now();

                            one.sayhello();

                   }

         }

 

         abstract class robot

         {

                   public abstract string name { get; set; }

                   public int age;

                   public abstract void sayhello();

         }

         class now : robot

         {

                   public override string name { get; set; }

                   public override void sayhello()

                   {

                            Console.WriteLine("hello");

                   }

         }

8、  包含抽象成员的类必须也是抽象类。

 

抽象方法

抽象方法就是抽象类之中需要被子类继承并重写的方法

定义语法

[访问修饰符] abstract 返回类型 方法名(传入参数);

abstract  [访问修饰符] 返回类型 方法名(传入参数);

 

继承并重写抽象方法的语法

[访问修饰符] override 返回类型 方法名(传入参数)

{

         方法体中的代码

}

注意:

1、  抽象类中的抽象方法没有具体的实现过程。

2、  抽象类中的抽象方法不能是私有的。

3、  抽象类中的抽象方法,必须在子类中全部重写并实现。

4、  子类找那个必须用override覆盖实现所有的抽象方法。

5、  不能将静态方法定义为抽象方法。

 

 

抽象属性

示例

public abstract string name { get; set; }

语法

[访问修饰符] abstract 返回类型 属性名{get;set;}

posted @ 2017-07-21 10:30  没什么比你更优秀  阅读(476)  评论(0编辑  收藏  举报