抽象类与接口


普通类可以定义普通方法(定义普通方法必须同时声明和方法体),虚方法(定义虚方法必须同时声明和方法体)
---------普通派生类不可以重写它的普通方法,
---------普通派生类可以重写或者不重写虚方法,

---------抽象派生类不可以重写它的普通方法,
---------抽象派生类可以重或者不重写虚方法,


抽象类可以定义普通方法(定义普通方法必须同时声明和方法体),虚方法(定义虚方法必须同时声明和方法体),抽象方法(定义抽象方法只能声明)
---------普通派生类不可以重写它的普通方法,
---------普通派生类可以重写或者不重写虚方法,
---------普通派生类必须实现抽象方法,

---------抽象派生类不可以重写它的普通方法,
---------抽象派生类可以重写或者不重写虚方法,
---------抽象派生类可能实现或者不实现抽象方法

接口只能声明方法(类似于抽象类的抽象方法)
---------普通类继承接口,必须全部实现方法,
---------抽象类继承接口,可以选择完全实现方法,或者选择实现声明部分(必须以抽象方式定义声明部分) 

 class Program
    {
        static void Main(string[] args)
        {
            CarA c =  new CarA("丰田", "AX001");
            c.SetLunZi();
            c.SetColor();

            CarB c1 = new CarB("上汽", "SQ001");
            c1.SetLunZi();
            c1.SetColor();
            c1.SetXingCheJiLuYi();

            CarC c2 = new CarC("大众", "DZ001");
            c2.SetLunZi();
            c2.SetColor(); 
        }
    }
    //-----大众一定是安装钛合金轮子,喷颜色是喷黑色
    //-----丰田一定是安装钛合金轮子,喷颜色是按照型号的
    //-----上汽根据型号来安装什么样材料的轮子,喷颜色按照型号来,免费送行车记录仪
    //-----一开始定义了一个Car来实现,里面有很多if。。。else;
    //-----后来根据不同的车,分开3个类来实现;
    //-----再后来多定义一个抽象类,把前面3个类的共同点抽出来。
    //-----抽象类是的其他一些同类型的类的一些公共点的集合,像是兄弟间的共同点,
    //-----如果定义成普通类,就变成Car是CarC的父亲,
    //-----而按照前面的操作,明显是兄弟类的共同点比较合理
    //-----至于为什么不定义成接口,抽象类也可以定义跟接口的一样的方法,
    //还有普通方法,虚方法,这些是接口没有的,派生类如果不想重写,就可以用抽象类现有的方法
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值