C#基础—访问修饰符

 

转载自微软官方文档:

 

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/abstract

 

 

1.abstract

  abstract 修饰符指示被修改内容的实现已丢失或不完整。 abstract 修饰符可用于类、方法、属性、索引和事件。 在类声明中使用 abstract 修饰符以指示某个类仅旨在作为其他类的基类。

标记为 abstract 的成员,或包含在抽象类中的成员,都必须由派生自抽象类的类来实现。

     

抽象类具有以下功能:

  • 抽象类不能实例化。

  • 抽象类可能包含抽象方法和访问器。

  • 无法使用 sealed 修饰符来修改抽象类,因为两个修饰符具有相反的含义。 sealed 修饰符阻止类被继承,而 abstract 修饰符要求类被继承。

  • 派生自抽象类的非抽象类,必须包含全部已继承的抽象方法和访问器的实际实现。

在方法或属性声明中使用 abstract 修饰符,以指示该方法或属性不包含实现。

抽象方法具有以下功能:

  • 抽象方法是隐式的虚拟方法。

  • 只有抽象类中才允许抽象方法声明。

  • 由于抽象方法声明不提供实际的实现,因此没有方法主体;方法声明仅以分号结尾,且签名后没有大括号 ({ })。

public abstract void MyMethod();  
  • 实现由方法 override 提供,它是非抽象类的成员。

  • 在抽象方法声明中使用 staticvirtual 修饰符是错误的在静态属性上使用 abstract 修饰符是错误的。 通过包含使用 override 修饰符的属性声明,可在派生类中重写抽象继承属性。

  • 抽象类必须为所有接口成员提供实现。

    实现接口的抽象类有可能将接口方法映射到抽象方法上。 例如:

interface I
{
    void M();
}
abstract class C : I
{
    public abstract void M();
}

 

2.sealed

    应用于某个类时,sealed 修饰符可阻止其他类继承自该类。

abstract 修饰符与密封类结合使用是错误的,因为抽象类必须由提供抽象方法或属性的实现的类来继承。

对基类中的虚方法或属性的方法或属性使用 sealed 修饰符。 这使你可以允许类派生自你的类并防止它们替代特定虚方法或属性。

3.virtual

   virtual 关键字用于修改方法、属性、索引器或事件声明,并使它们可以在派生类中被重写

不能使用virtual修饰符与staticabstractprivate,或override修饰符。

  

posted @ 2018-04-08 10:44  小柏树  阅读(216)  评论(0)    收藏  举报