几行代码帮你搞懂C#中的接口、抽象类(抽象方法)、虚函数

几行代码帮你搞懂C#中的接口、抽象类(抽象方法)、虚函数


TestImplement1 Test1 = new TestImplement1();
TestImplement2 Test2 = new TestImplement2();
Test1.fun1();  //子类1调用基类中的普通方法1,该方法时对接口的实现
Test2.fun1();  //子类2调用基类中的普通方法1,该方法时对接口的实现

Test1.fun2();  //子类1调用基类中的普通方法2,该方法时对接口的实现
Test2.fun2();  //子类2调用基类中的普通方法2,该方法时对接口的实现

Test1.fun3();  //子类1调用普通方法3,该方法由子类自己定义
Test2.fun3();  //子类2调用普通方法3,该方法由子类自己定义

Test1.fun4();  //子类1调用抽象方法
Test2.fun4();  //子类2调用抽象方法

Test1.fun5();  //子类1没有重写基类中的虚方法5,因此这里调用的是基类的fun5
Test2.fun5();  //子类2重写了虚方法5,所以调用的是重写后的方法

public interface IBase  //继承IBase中的方法全部要实现
{
    public void fun1();
    public void fun2();
}

public abstract class Base : IBase
{
    public void fun1()
    {
        Console.WriteLine("这是对接口的第一个方法实现");
    }

    public void fun2()
    {
        Console.WriteLine("这是对接口的第二个方法实现");
    }

    public void fun3()
    {
        Console.WriteLine("这是子类的一个普通方法");
    }
    public abstract void fun4();
    public virtual void fun5() //虚方法必须要有实现
    {
        Console.WriteLine("这是基类提供的一个虚方法");
    }
}

public class TestImplement1 : Base
{
    public override void fun4()  //强制重写方法fun4
    {
        Console.WriteLine("子类1重写抽象方法fun4");
    }
}

public class TestImplement2 : Base
{
    public override void fun4() //强制重写方法fun4
    {
        Console.WriteLine("子类2重写抽象方法fun4");
    }

    public override void fun5()  //非强制,但也可以重写
    {
        Console.WriteLine("这里是子类重写了基类中fun5中的虚方法,不是强制要重写");
    }
}

宝,你肯定懂了,对吧?
什么,没懂,没事再看一遍!
又看了一遍,还不懂?宝,要不咱再看一遍
第三遍了,宝你一定懂了。什么还是不懂,宝如果我是你,我就取关了这傻逼博主了,写的什么垃圾。
如果有的代码你看三遍还是不懂,不用怀疑,写代码的那人就是个垃圾,换个人的博客看看。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值