《C#入门经典》第六版 学习笔记之第九章 定义类

第八章是从概念层讲述了OOP技术,第九章之后则是具体的将第八章内容精讲。如果第八章不好理解,可以带着疑问去看后面的章节。在后面的章节看完后再回头重温第八章。

第九章 定义类
9.1 c#中类的定义
定义类使用关键字class
class <ClassName>
{
        //class members;
}
默认情况下,类是内部的,只有 当前项目中的代码能够访问。可以用internal访问修饰符来显式的指定这一点
而如果类是公共的,可由其他项目的代码来访问时,可以用public访问修饰符来指定。
访问修饰符后可以指定类是抽象类还是密封类——可以用互斥的关键字来指定abstract、sealed。抽象类不能实例化只能继承,可以有抽象成员。密封类不能继承。
(当前项目指的是什么?)
类的继承:
定义类完成后,在后面加分号然后加基类类名。
public class <ClassName>:<BaseClassName>
{
        //class members;
}
编译器不允许派生类的可访问性高于基类。即内部类可以继承于公共基类,但公共类不能继承于一个内部类。
接口与基类:
类不但可以继承,还能在后面指定支持的额接口,如果指定了基类则接口要在基类后面,接口和基类间用逗号分隔。如果未指定基类,接口就在冒号后面即可。可以指定多个接口,都以逗号分隔。
支持该接口的类必须实现所有接口成员,如果不想用给定的接口成员,可以提供一个空的没有函数代码的实现方法。还可以把接口成员是实现为抽象类的抽象成员。


表9-1 类定义可以使用的访问修饰符
修饰符
含义
无或internal
只能在当前项目中访问类
public
可以在任何地方访问类
abstract 或 internal abstract 类只能在当前项目中访问,不能实例化只能被继承
public abstract
类可以在任何地方访问,不能实例化只能被继承
sealed 或 internal sealed
类只能在当前项目中访问,不能被继承,只能实例化
public sealed
类可以在任何地方访问,不能被继承,只能实例化

接口的定义:
声明接口与声明类的方式类似,使用关键字不一样,为interface。接口名前一般加大写字母I
interface <I接口名>
{
    //Interface members.
}
接口的访问修饰符关键字跟类一样,是public 、internal,要接口可以公开访问则必须使用public
不能在接口中使用关键字abstract、sealed。因为这两个修饰符在接口定义中是无意义的。(没有所谓的抽象接口或密封接口)
接口不是类,所以没继承System.Object,System.Object的成员可以通过接口类型变量来访问。因此,不能用实例化类的方式来实例化接口。

9.2 System.Object

表9-2 System.Object类的方法
略 P180

9.3 构造函数和析构函数
1、在类中,分为公共函数(public)和私有函数(private)
2、类的对象可以使用公共函数进行实例化,不能使用私有函数进行实例化。
3、在.NET中使用的析构函数被成为Finalize(),但这不是我们用于声明析构函数的名称。类的析构函数由带有~前缀的类名称来命名(构造函数也使用类名声明)。

构造函数的执行序列
1、无论在派生类上使用什么构造函数(默认的构造函数或者非默认的构造函数),除非明确指定,否则就使用基类的默认构造函数。
2、注意书中的做说明的实例化类的函数时,类的执行顺序。
3、了解什么是构造函数初始化器、初始化器的用法以及使用初始化器后类的构造函数的执行顺序。
初始化器:base()和this()
如果没有给构造函数指定构造函数初始化器,编译器会自动添加base(),则会以默认的执行顺序执行。
4、注意定义构造函数时,不要创建无限循环。如果两个构造函数相互指定对方为初始化器顺序,二者都是需要对方先执行,就会陷入死循环。

★9.4 Visual Studio 中的OOP工具


9.8浅度和深度复制
浅度复制方法:MemberwiseClone()
深度复制需要使用Icloneable接口,同时实现接口的Clone()方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值