抽象类

---恢复内容开始---

抽象类的特征:

  • 抽象类中的定义的抽象属性和方法只需要定义功能不需要具体代码实现。
  • 继承于抽象类的子类,如果子类不是抽象类,则必须实现抽象类中定义的抽象属性和方法。
  • 抽象类本身不能实例化,但可以引用子类实例。
  • 抽象类中的抽象成员访问修饰符不能为private.

public abstract class Car

{

   private  string  name;

   public  void show()

  {

  }

   public abstract string Color{get;set;}

   public abstract void Run();

   public abstract void Stop();

}

抽象类本身不能实例化,但是可以引用子类实例;抽象类中可以定义非抽象成员,抽象类的子类并不需要重写抽象类的非抽象成员,而是按照继承的方式得到非抽象成员;抽象类中的抽象成员只是提供了一种功能的描述而没有具体的实现,抽象类的子类会使用Override关键字重写抽象类中定义的抽象成员,从而提供功能的具体实现;抽象类中的抽象成员不能用private修饰。

 class Program
    {
        static void Main(string[] args)
        {
            NewCar newcar = new NewCar();
            newcar.name = "奔驰";
            newcar.Color = "红色";
            newcar.Run();
            newcar.Show();
            newcar.Stop();
            Console.ReadLine();
        }
    }
    abstract class Car
    {
        public string name;
        public void Show()
        {
            Console.WriteLine(name);
        }
        public abstract string Color { set;get;}
        public abstract void  Run();
        public abstract void Stop();
    }
    class NewCar: Car
    {
        private string color;
        public override string Color {
            get { return color; }
            set { color = value; } 
        }
        public override void Run()
        {
            Console.WriteLine("{0}{1}在飞驰!",color,name);
        }
        public override void Stop()
        {
            Console.WriteLine("{0}{1}停下来了!",color,name);
        }
    }
View Code

1.         解释什么是抽象类?

抽象类是包含抽象方法的类。那么什么又是抽象方法呢?抽象方法是没有方法内容的,只有一个方法名和参数列表的方法。并以;结尾。为了标注他的与众不同,在他的返回类型前加abstract。并在class前加abstract。

简言之,由abstract修饰的方法和类就是抽象的方法和类。

2.         抽象类的特点

①  抽象类只能做父类

②  抽象类不能实例化,既不能用new来产生属于抽象类的对象

③  抽象类中除了抽象方法与普通方法不一样以外,其他的部分和普通类一样。即抽象类是普通类的特例,他特殊只是有抽象方法。所以它里面可以有字段,属性,普通方法。

3.         抽象方法的特点

①  抽象方法是没有方法内容的,只有一个方法名和参数列表的方法。并以;结尾。

②  在方法的返回类型前加abstract

③  抽象方法的内容由他的继承类根据继承类自身情况去写。重写这个方法时把abstract替换成override

注意:②③也是抽象属性的定义和实现的方法

4.抽象类里的普通方法如果也想在子类中重写,有两种方法:

①在父类普通方法的返回类型前写virtual,这就告诉系统父类这个方法是虚的方法,在子类中重写该方法时,在方法的返回类型前可以什么也不写,可以写new,也可以写override,然后子类对象调用的方法就是在子类中重写的方法。 

②在父类普通方法的返回类型前什么都不写,在子类中重写该方法时,在方法的返回类型前可以什么也不写,可以写new 。然后子类对象调用的方法就是在子类中重写的方法。 

---恢复内容结束---

抽象类的特征:

  • 抽象类中的定义的抽象属性和方法只需要定义功能不需要具体代码实现。
  • 继承于抽象类的子类,如果子类不是抽象类,则必须实现抽象类中定义的抽象属性和方法。
  • 抽象类本身不能实例化,但可以引用子类实例。
  • 抽象类中的抽象成员访问修饰符不能为private.

public abstract class Car

{

   private  string  name;

   public  void show()

  {

  }

   public abstract string Color{get;set;}

   public abstract void Run();

   public abstract void Stop();

}

抽象类本身不能实例化,但是可以引用子类实例;抽象类中可以定义非抽象成员,抽象类的子类并不需要重写抽象类的非抽象成员,而是按照继承的方式得到非抽象成员;抽象类中的抽象成员只是提供了一种功能的描述而没有具体的实现,抽象类的子类会使用Override关键字重写抽象类中定义的抽象成员,从而提供功能的具体实现;抽象类中的抽象成员不能用private修饰。

 class Program
    {
        static void Main(string[] args)
        {
            NewCar newcar = new NewCar();
            newcar.name = "奔驰";
            newcar.Color = "红色";
            newcar.Run();
            newcar.Show();
            newcar.Stop();
            Console.ReadLine();
        }
    }
    abstract class Car
    {
        public string name;
        public void Show()
        {
            Console.WriteLine(name);
        }
        public abstract string Color { set;get;}
        public abstract void  Run();
        public abstract void Stop();
    }
    class NewCar: Car
    {
        private string color;
        public override string Color {
            get { return color; }
            set { color = value; } 
        }
        public override void Run()
        {
            Console.WriteLine("{0}{1}在飞驰!",color,name);
        }
        public override void Stop()
        {
            Console.WriteLine("{0}{1}停下来了!",color,name);
        }
    }
View Code

1.         解释什么是抽象类?

抽象类是包含抽象方法的类。那么什么又是抽象方法呢?抽象方法是没有方法内容的,只有一个方法名和参数列表的方法。并以;结尾。为了标注他的与众不同,在他的返回类型前加abstract。并在class前加abstract。

简言之,由abstract修饰的方法和类就是抽象的方法和类。

2.         抽象类的特点

①  抽象类只能做父类

②  抽象类不能实例化,既不能用new来产生属于抽象类的对象

③  抽象类中除了抽象方法与普通方法不一样以外,其他的部分和普通类一样。即抽象类是普通类的特例,他特殊只是有抽象方法。所以它里面可以有字段,属性,普通方法。

3.         抽象方法的特点

①  抽象方法是没有方法内容的,只有一个方法名和参数列表的方法。并以;结尾。

②  在方法的返回类型前加abstract

③  抽象方法的内容由他的继承类根据继承类自身情况去写。重写这个方法时把abstract替换成override

注意:②③也是抽象属性的定义和实现的方法

4.抽象类里的普通方法如果也想在子类中重写,有两种方法:

①在父类普通方法的返回类型前写virtual,这就告诉系统父类这个方法是虚的方法,在子类中重写该方法时,在方法的返回类型前可以什么也不写,可以写new,也可以写override,然后子类对象调用的方法就是在子类中重写的方法。 

②在父类普通方法的返回类型前什么都不写,在子类中重写该方法时,在方法的返回类型前可以什么也不写,可以写new 。然后子类对象调用的方法就是在子类中重写的方法。 

原文地址:https://www.cnblogs.com/lovezhangyu/p/3374415.html