C#类和成员定义
1 定义类
C#用关键字class来定义类。默认情况下,类声明为内部(internal)的,即只有当前项目中的代码才能访问它。与之相对应的,还可以用public关键字来修饰,这样该类还可以由其他项目中的代码来访问。
以这种方式声明的类不能是私有或者受保护的,但是可以把这些修饰符用于修饰类成员。编译器不允许派生类的可访问性高于基类。也就是说,内部类可以继承于一个公共基类,但是公共类不能派生于内部类。
除此之外,还可以指定两个关键字abstract和sealed来修饰。abstract指定抽象类(不能实例化,只能继承,可以有抽象成员)。sealed用来指定密封类(不能继承)。abstract与sealed两个关键字是互斥的。
C#中类定义的语法可以写作:
1: [internal | public] [abstract | sealed] class <类名> : [<基类>,] [<接口1>,<接口2>…]
2: {
3: //类定义
4: }
小结:
关键字 |
性 质 |
|
可访问性 |
public |
可以由其他项目中的代码来访问 |
internal |
只有当前项目中的代码才能访问 |
|
可继承性 |
abstract |
不能实例化,只能继承,可以有抽象成员 |
sealed |
不能继承,子类中无法修改 |
需要注意的是C#与C++不同,所有继承都是公共继承,不支持私有继承!如果类定义时没有指定基类,默认吧System.Object作为基类。
2 定义类成员
2.1 成员定义
类成员中包括字段、属性和方法。访问级别包括public(成员可以由任何代码访问)、private(成员只能由类中代码访问,默认使用private)、internal(只能由项目内代码访问)、protected(只能由类或派生类的代码访问)。后两个关键字可以合并使用,所以也有protected internal成员。他们只能由定义的类和项目中的派生类的代码来访问。
也可以使用static关键字来声明字段、属性和方法,表明它们是静态成员,而不是对象实例的成员。
2.2 字段定义
修饰符:public、private、internal、protected、static、readonly。其中readonly修饰的字段只能在声明阶段或者构造函数阶段可以进行赋值。
2.3 定义方法
方法可以用下列关键字来修饰:
static——只能通过类名来访问。
virtual——方法可以重写。
abstract——方法必须在非抽象的派生类中重写。
override——重写一个基类方法时必须使用该关键字。如果使用了override,还可以配合使用sealed指定在派生类中该方法不能被重写。
例:public override sealed void DoSomething()。
extern——方法定义放在其他地方。
2.4 定义属性
可将属性标记为 public、private、protected、internal或protected internal。这些访问修饰符定义类的用户如何才能访问属性。属性还可以使用virtual、override和abstract关键字,就像方法一样。
C#的属性拥有两个类似于函数的块,称为访问器。同一属性的get和set访问器可能具有不同的访问修饰符。例如,get可能是public以允许来自类型外的只读访问;set 可能是 private 或 protected。访问器可以使用的访问修饰符取决于属性的可访问性,访问器的可访问性不能高于它所属的属性,也就是说,私有属性的访问器不能包含任何可访问修饰符,而公共属性可以对其访问器使用所有可访问修饰符。
C#类和成员定义的更多相关文章
- C++类的成员函数(在类外定义成员函数、inline成员函数)
类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private ...
- PHP中如何定义类及其成员属性与操作
1.类的定义: i. 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ 成员属性........ 操 ...
- PHP如何定义类及其成员属性与操作
1.类的定义: 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ //成员属性 $name = ' ...
- c++函数模板作为类的成员函数,编译报错LNK2019的解决方法
为了使某个类的成员函数能对不同的参数进行相同的处理,需要用到函数模板,即template<typename T> void Function(). 编译时报错LNK2019 解决方法: 1 ...
- [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)
[.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...
- 深入理解PHP内核(十四)类的成员变量及方法
原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数, ...
- Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理
上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...
- (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考
昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...
- C++类的成员函数使用的一些小总结
From: http://blog.csdn.net/xiayefanxing/article/details/7607506 这一阵做项目代码开发的时候,用到了在一个C++文件中使用另一个类的成员函 ...
随机推荐
- Android 实用代码七段(二)
声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.获取应用程序下所有Acti ...
- 查看tablespace的使用情况
by tablespace(使用单位G): SELECT a.tablespace_name,(all_size-b.unuse_size) use_size,b.unuse_size,a.all_s ...
- 安装Python及工具
在Windows上安装Python 第一步:下载安装包 根据Windows版本(64或32)从Python官方网站下载对应的Python版本,此次使用python V3.5. 下载路径:https:/ ...
- SQL经典题
1触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性, 可以跟踪数据库内的操作从而不允许未经许可的更新和变化.可以联级运算 ...
- Asp.Net MVC4新特性指南(2):新特性介绍
上一章讲解了最基本的MVC4说明.今天就介绍下几种新特性的使用例子: 就当大家有MVC3的基础了.在这个基础上在看下面的介绍就容易多了.1.Web API MVC4包括一个更好的解决方案:A ...
- 【CSS3】Advanced5:At Rules:@import, @media, and @font-face
1.@import bolt another stylesheet onto your existing one. @import url(**.css); must be placed at the ...
- pes and ts stream, how to convert
http://stackoverflow.com/questions/4145575/transport-stream-mpeg-file-fromat What you are probably w ...
- makeKeyAndVisible的功能
makeKeyAndVisible的作用 [self.window makeKeyAndVisible] 由于iPhone是单窗口程序,所以也就只有这么一个Window对象,而且是UIWindow,不 ...
- 使用ProcDump在程序没有响应时自动收集dump
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用ProcDump在程序没有响应时自动收集dump.
- Python 3. 里filter与generator expression的区别
# -*- coding: utf-8 -*- """ A test to show the difference between filter and genrator ...