抽象类和接口

抽象类

abstract 修饰

抽象类是一种比较特殊的类

特殊性:

1 不能被实例化

2 抽象类可包含抽象方法和属性,也可以包含非抽象的成员,但抽象方法一定存在于抽象类中

3 抽象基类的方法的抽象成员必须在具体派生类中重写(override)

4 抽象类满足类的单一继承和继承传递性

 1 public abstract class Animal
 2 {
 3     public void Eat()
 4     {
 5         Console.WriteLine("吃饭");
 6     }
 7     
 8     public abstract void Run();
 9 }
10 
11 public class Dog:Animal
12 {
13     public override void Run()
14     {
15         Console.WriteLine("");
16     }
17 }
View Code

关于抽象类为什么不能实例化

抽象类除了不能实例化和普通的类没有区别,抽象类可以有构造方法,举例说明抽象类Person,

类有男有女,有年龄等特征,有吃饭等方法,抽象类实例化时属性或方法没有具体的化,实例化人

类对象不知男女,没有年龄或其他信息是未知的。抽象类更多的是用于定义公用的方法以供继承。

 

接口Interface

接口是一种规范,表示一种能力功能,形式I开头,able结尾

特殊性:

1 接口不能实例化

2 接口中的方法默认是抽象的,默认是public的,不需要abstract修饰

3 实现接口的具体类必须重写接口的成员,且不需要override关键字

4 接口只能包含方法,属性,索引器和事件

5 接口可继承多个接口,类可以实现多个接口

interface IFlyable
{
    string Tool { get; set; }
}

public class Bird:IFlyable
{
    public string Tool { get; set; }
    
    public void Fly()
    {
        Console.WriteLine("鸟用{0}飞",this.Tool);
    }
}
View Code
原文地址:https://www.cnblogs.com/arvinzd/p/14172362.html