C#关键字: Sealed, Abstract, Virtual和Interface

Sealed:    可以用于修饰类,方法和属性。表示密封的,隐式密封,不允许被继承.

·         密封类会重写父类,但本身不允许被重写和继承;

·         Sealed方法和属性必须始终和override一起使用;

举例如下:

// cs_sealed_keyword.cs

using System;

sealed class SealedClass

{

        public int x;

        public int y;

}

 

class MainClass

{

        static void Main()

        {

               SealedClass sc = new SealedClass();

               sc.x = 110;

               sc.y = 150;

               Console.WriteLine("x = {0}, y = {1}", sc.x, sc.y);

        }

}

 

 

 

Abstract: 可以和类,方法,属性,索引器,事件一起使用。在类声明中使用abstract表明该类只能是其他类的基类,该类中的成员的只能在派生类中实现;标记为abstract的成员也只能在派生类中实现;abstract方法只允许在abstract类中声明,这样的方法默认是虚方法。

·         抽象类不能被实例化;

·         从抽象类派生的非抽象类必须实现抽象类的所有抽象方法和抽象访问器;

·         不能用Sealed修饰抽象类;

举例如下:

abstract class ShapesClass

{

         abstract public int Area();

}

class Square : ShapesClass

{

        int x, y;

        // Not providing an Area method results

        // in a compile-time error.

        public override int Area()

        {

               return x * y;

        }

}

 

 

Virtual: 用于修饰方法、属性、索引器或事件声明,允许派生类中重写这些方法。

   Virtual不能和static, abstract, override, private一起使用。

 

Interface: 描述一组相关的功能体,这些功能体可以属于任何classstructInterface可以包含function, property, event, indexers; interface不可以包含field, interface的成员默认情况下是public的。

要在class实现interface的成员:

·         必须是public, non-static; 名字和signature必须和interface保持一致;

·         Property, indexer可以定义额外的accessor;

·         Interfaceinterfacemember都是abstract的,不提供默认的实现。

·         Interface可以继承别的interface

·         一个class可以多次继承一个interface,而只需要实现一次其member.

举例如下:

public class Minivan : Car, IComparable

{

public int CompareTo(object obj)

{

//implementation of CompareTo

return 0;  //if the Minivans are equal

}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值