继承小结与抽象

继承小结与抽象类
继承的特征:
①子类拥有父类的所有信息和方法(除构造方法外)
②子类只能访问父类用public和protected修饰的属性和方法
③单继承
④用sealed修饰的类不能被继承
⑤子类调用父类的参数的构造方法时必须用base,子类构造方法可以不带参数
⑥子类重写父类方法时,父类同名方法用virtual修饰,子类同名方法用override修饰
⑦子类方法访问父类同名方法时用base
⑧创建子类对象时,先调用父类的构造方法,然后在调用子类的构造方法
 抽象类
在C#中使用关键字 abstract 来定义抽象类和抽象方法
不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例。
使用abstract 在一个类声明中表示该类倾向要作为其它类的基类成员被标示成abstract,或被包含进一个抽象类,必须被其派生类实现。
通过在类定义前面放置关键字 abstract,可以将类声明为抽象类
PS:     public abstract class A
           {
               public abstract void print(int i);
            }
如果将 virtual 方法声明为 abstract,则该方法对于从抽象类继承的所有类而言仍然是虚方法。  继承一个抽象方法的类不能访问该方法的原始实现
一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。
通过声明派生类也为抽象,我们可以避免所有或特定的虚方法的实现,这就是抽象类的部分实现。
abstract class MyAbs
    {
        public abstract void AbMethod1();
        public abstract void AbMethod2();
    }
    //not necessary to implement all abstract methods
    //partial implementation is possible
    abstract class MyClass1 : MyAbs
    {
        public override void AbMethod1()
        {
            Console.WriteLine("Abstarct method 1");
        }
    }
    class MyClass : MyClass1
    {
        public override void AbMethod2()
        {
            Console.WriteLine("Abstarct method 2");
        }
    }
    class MyClient
    {
        public static void Main()
        {
            MyClass mc = new MyClass();
            mc.AbMethod1();
            mc.AbMethod2();
        }
    }

抽象方法有以下特征:

1.一个抽象方法可以看作是一个虚函数。

2.抽象方法的声明只能在抽象类中。

3.因为抽象方法声明只提供一个无实现的方式,没有方法体

4.方法体的实现被覆写方法提供,覆写方法是一个非抽象类的成员。

5.抽象属性的行为和抽象方法相像,除了不同的声明形式。

6.在一个静态属性中使用abstract 是一个错误。

        *一个抽象属性能够通过派生类使用 override 实现.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值