c# 接口和抽象方法的学习

1.、接口的概念及声明

1.接口只包含方法、属性、索引器、事件的签名,但不能定义常量、字段(域)、构造函数、析构函数、静态成

员和接口不包含方法的实现;

2.接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员(说明:如类A继承接口B,那

么A中必须实现B中定义的属性,方法等)。

3.不能直接实例化接口,可以通过继承实现其抽象方法。

4.支持多继承;可以用于支持回调;可以作用于值类型和引用类型;C#中不能包含任何静态成员

接口自身可以继承多个接口

5.在声明接口时除了Interface和接口名称是必须的,其他都是可选项。另可使用new、public、protected、

intenal和private等修饰符实现接口,但接口成员必须是公共的。

2.接口的使用例子

namespace AppTest
{
    class Demo_interface
    {
        static void Main(string[] args)
        {
            **//使用(注意,这里是使用接口 IPrint,下面是不同的实例,获得不同功能)**
            IPrint I;
            I = new A(); //实例化 A,将打印出 A
            I.Print();
            I = new B(); //实例化 B,将打印出 B
            I.Print();

        }
        }
interface IPrint
    {
           void Print();**//只定义,不实现**
           //IPerson();                //错误
          //string name;              **//错误 但不能定义字段**
         //public void GetIDcard(); //错误
         //void GetName();           //正确
         //void GetAge(string s);    //正确
         //int GetHeight();          //正确

    }
  class A : IPrint
    {
        //实现接口方法,必须有,
        //当然还可以再添加其它的字段、属性、方法
        public void Print()
        {
            System.Console.WriteLine("A");
        }
    }
    class B : IPrint
    {
        public void Print()
        {
            System.Console.WriteLine("B");
        }
    }
}  

深入理解接口作用

3.抽象方法的概念及声明

抽象类与非抽象类的主要区别:

1.抽象类不能直接被实例化

2.抽象类中可以包含抽象成员,但非抽象类中不可以

3.抽象类不能被密封

声明抽象方法时需注意:

1.抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象

类,抽象方法必须声明在抽象类中。

2.声明抽象方法时,不能使用virtual、static、private修饰符。

3.当一个类继承于抽象类,那么这个派生类必须实现所有的基类抽象方法和访问器的实现(非抽象类)。

4.一个抽象类可以包含抽象和非抽象方法,抽象方法是一个没有方法体的方法。非抽象方法的抽象类可以写

方法体。

4.如:

 abstract class MyAbs
    {
        public void NonAbMethod()
        {
            Console.WriteLine("Non-Abstract Method");//非抽象方法的抽象类
        }
        public abstract void AbMethod(); // An abstract method
    }
    class MyClass : MyAbs//must implement base class abstract methods
    {
        public override void AbMethod()
        {
            Console.WriteLine("Abstarct method");
        }
    }
    class MyClient
    {
        public static void Main()
        {
            MyClass mc = new MyClass();
            mc.NonAbMethod();
            mc.AbMethod();
        }
    }

抽象方法更多例子

4.接口和抽象方法的区别

1.它们的派生类只能继承一个基类,即只能继承一个抽象类,但是可以继承多个接口。

2.抽象类中可以定义成员的实现,但接口中不可以。

3.抽象类中包含字段、构造函数、析构函数、静态成员或常量等,接口中不可以。

4.抽象类中的成员可以私有的(只要不是抽象的)、受保护的、内部的或受保护的内部成员,但接口中的成员必须是公共的。

注:抽象类和接口这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要特性,

例如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍然可以完成某些相同的任

务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值