C#的Class的几个修饰符
none or internal 类只能在当前的工程中访问
Public 类可以在任何地方访问
abstract or internal abstract 类可以在当前的工程中访问,不能实例化,只能继承
Public abstract 类可以在任何地方访问,不能实例化,只能继承
sealed or internal sealed 类只能在当前的工程中访问,只能实例化,不能继承
Public sealed 类可以在任何地方访问,只能实例化,不能继承
1、用于关键字class的修饰符
1)internal 默认修饰符,指定类为内部的,只有当前工程中的代码才能访问它
2)public 指定类为公共的,其它工程中的代码也可以访问它
3)abstract 指定类为抽象的,不能实例化,只能继承,可以有抽象成员
4)sealed 密封的,不能继承
其中,internal和public是一对互斥关系,abstract和sealed是一对互斥关系,两对之间可以互相搭配使用。
默认类定义如下:
class A{}即相当于internal class A{},internal通常是省略的。
2、用于关键字interface的修饰符
1)public和private 这对访问修饰符和关键字class的定义是一样的,由于接口的公共特性通常使用public
2)abstract和sealed 这对修饰符不能在接口中使用,因为它们对接口毫无意义
当定义派生类时,如果同时有基类和接口,那么先写基类再写接口,用逗号分开,只能继承一个基类但可以有多个接口,如:
class DerivedClass:BaseClass,IInterface1,IInterface2
{}
接口定义和继承如下:
public interface IMyInterface:IInterface1,IInterface2
{}
3 、用于类成员(包括字段、属性、方法)的修饰符
1)public--成员可以由任何代码访问
2)private--成员只能由本类中的代码访问(默认值)
3)internal--成员只能由定义它的工程(装配件)内部的代码访问
4)protected--成员只能由类或派生类中的代码访问
最后两个关键字可以合并使用,即protected internal,只能由工程(装配件)中类和派生类的代码访问。此外与以上关键字并行的还有static,表示类的静态成员,而不是类的实例成员。字段还可以定义为realonly,只能在定义时或构造函数中赋值并赋值后不可更改。
4、类方法还有另外的关键字定义
1)virtual--方法可以重写
2)abstract--方法必须重写(只用于抽象类中,如果类方法定义了abstract则class也必须追加abstract)
3)override--方法重载了一个基类方法(如果方法被重载则必须使用该关键字)
4)extern--方法定义在其他地方
另:派生类的类方法还可以使用new来隐藏基类方法;通过this指向当前类实例引用,通过base关键字指向基类实例引用。
C#的Class的几个修饰符的更多相关文章
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- Java类访问权限修饰符
一.概要 通过了解Java4种修饰符访问权限,能够进一步完善程序类,合理规划权限的范围,这样才能减少漏洞.提高安全性.具备表达力便于使用. 二.权限表 修饰符 同一个类 同一个包 不同包的子类 不同包 ...
- iOS 方法修饰符
一.NS_DESIGNATED_INITIALIZER 用来修饰init方法,被修饰的方法称为designated initializer:没有被这个修饰的init方法称为convenience i ...
- C#基础回顾(一)—C#访问修饰符
一.写在前面的话 好久没有停下来总结自己,转眼间15年过去好些天,回首过去的日子,亦或失去,亦或所得!生活的节奏,常常让我们带着急急忙忙的节奏去追赶,也许这并不是每个人所期望的生活方式!于他人,于自己 ...
- 关于Java语言中那些修饰符
一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...
- C#基础知识八之访问修饰符
1. 类的访问修饰符 修饰符 访问权限 无或者internal 只能在同一个程序集中访问类 public 同一个程序集或引用该程序集的外部都可访问类 abstract或internal abstra ...
- java访问修饰符
了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...
- java静态修饰符static的使用
class Person { private String name; private int age; /* * 假设每个Person对象的国籍都一样, * 那么每次调用都要赋值就会不合理. * 使 ...
- Scala访问修饰符(四)
Scala 访问修饰符基本和Java的一样,分别有:private,protected,public. 如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public. Scala ...
- Java 修饰符
Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class classNam ...
随机推荐
- qemu-kvm: unable to map backing store for guest RAM: Cannot allocate memory
当给 KVM 虚拟机设置 hugepage 时,需要在虚拟机的配置文件里加上下面一段: <memoryBacking> <hugepages/></memoryBacki ...
- leetcode-mid-sorting and searching - 33. Search in Rotated Sorted Array
mycode class Solution(object): def search(self, nums, target): """ :type nums: List[i ...
- WPF中的WndProc
其实,在WPF中,要想利用WndProc来处理所有的事件,需要利用到SourceInitialized Event,首先需要创建一个HwndSource对象,然后利用其AddHook方法来将所有的w ...
- VS调试异常代码 HRESULT:0x80070057 (E_INVALIDARG)解决方法
我目前在做的一个系统是VS2010写的的B/S架构程序, 主要技术是:C#.SQLSERVER2008.NHibernate,Python,Nhibernate 的*.hbn.xml是映射数据库的表结 ...
- 【不错】MySQL 事务隔离级别
一.事务描述 1.事务的四个特性 ACID 1. A:原子性 = 一个事务或者都成功.或者都失败: 2. C:一致性 = 在整个事务的生命周期里面,查询到的数据是一致的: MVCC多版本并发控制:利用 ...
- 【MM系列】SAP MM模块-控制采购订单中某些项目的输出显示
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-控制采购订单中某些 ...
- Java多线程学习——sleep和yield
Thread.sleep(); Thread.yield(); 相同点: 让线程暂停运行. 都是静态方法,可以直接调用. 不同点: sleep让线程从运行状态进入阻塞状态,但是不放开手中的资源. yi ...
- java版微信支付/查询/撤销
最近公司接入微信刷卡支付,网上根本没见到很直接的教程(可能眼拙),一直摸滚打爬,加班加点才走通,忍不了必须写一写 微信 刷卡支付/查询/撤销... 必须要有公众号然后去申请,申请自己去看文档,这里主要 ...
- 【Linux 源码】Linux源码比较重要的目录
(1)arch arch是architecture的缩写.内核所支持的每一种CPU体系,该目录下都有对应的子目录. 每个CPU的子目录,又进一步分解为boot.mm.kernel等子目录,分别包含控制 ...
- restful风格详解
一.概念 RESTful架构,就是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. REST这个词,是Roy Thomas Fielding在他 ...