C#基础抽象类和接口——小白笔记#3

一、抽象类

抽象类(abstract)是一个特殊的类,不能被实例化,抽象类中一般包括抽象方法与普通方法,抽象类和抽象方法用abstract进行修饰,抽象类一般当做父类进行使用,子类如果继承抽象类,其子类就必须使用override进行重写。如果子类继承抽象类就必须实现抽象类中的功能。

抽象类的的语法形式:

访问修饰符 abstract class 抽象类名()

{

        类成员(普通方法、抽象方法等);

}

抽象方法的语法形式:

访问修饰符  abstract 返回值 抽象方法名();

 子类重写抽象方法:

访问修饰符 override 返回值 抽象方法名()

{

        方法体;

}

 抽象方法不做功能实现,功能由它的子类进行实现。

案例分析:

抽象类中可以将抽象方法和普通方法进行封装,其中Dog类继承自Animal类,既能够继承Animal中的Run()方法也能够继承抽象方法Eat(),因为Eat()是抽象方法,所以在Dog类中要对Eat()方法进行重写。

public abstract class Animal
{
    public abstract void Eat();
    public void Run()
    {
        Console.WriteLine("跑");
    }
}
public class Dog():Animal
{
    public override void Eat()
    {
        Console.WriteLine("肉");
    }
}

抽象类的特点:

1.不能被实例化。

2.抽象类和抽象方法必须使用abstract进行修饰。

3.子类必须使用override进行抽象方法的重写

4.抽象方法不能对其功能进行实现。

5.其子类必须实现抽象方法中的功能。

二、接口

接口(interface)只进行方法的声明,不实现具体功能。接口也同样不能被实例化,接口的设计就是规定了此程序必须要有哪些功能,由使用者来进行方法的实现,从而保证了其功能的完整性。接口不能使用访问修饰符,接口默认访问修饰符就为public,因为接口的设计就是为了让子类继承。接口的命名方式一般用“I”作为首字母。

接口的语法形式:

interface I接口名

{

        接口成员;

}

案例分析:

接口Itest中存在Run()和Eat()两个方法,现有Animal类继承Itest这个接口,就必须对这两个方法进行具体实现,可以说接口相当于一种规范,避免在写代码的过程中造成功能的缺失。

internal class Animal:Itest
{

    static void Main(string[] args)
    {
        Animal animal = new Animal();
        animal.Run();
        animal.Eat();
    }
    public void Run()//对接口中的方法进行实现
    {
        Console.WriteLine("跑");
    }
    public void Eat()//对接口中的方法进行实现
    {
        Console.WriteLine("吃");
    }
}
interface Itest
{
    void Run();
    void Eat();
}

接口继承:接口和类一样可以实现多层成,接口可以继承接口。

案例分析:

接口Itest1继承Itest,所以Animal继承Itest1接口时,同样要实现接口Itest中的Eat()方法进行实现。

internal class Animal:Itest1
{

    static void Main(string[] args)
    {
        Animal animal = new Animal();
        animal.Run();
        animal.Eat();
    }
    public void Run()
    {
        Console.WriteLine("跑");
    }
    public void Eat()
    {
        Console.WriteLine("吃");
    }
}
interface Itest
{
    void Eat();
}
interface Itest1:Itest

{
    void Run();
}

三、抽象类与接口的区别

1、抽象类中可以使用具体实现的方法,而接口中只能进行方法的声明;

2、抽象方法要用sbstract进行修饰,通过override进行重写,而接口不要使用访问修饰符,默认为        public;

3、抽象类只能实现单继承,而接口可以实现多继承。

4、抽象类可以包含定义好的方法以及字段,接口只能包含方法的声明不能包含字段。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值