C#面像对象编程学习笔记(一)

C#高级编程(第4版)

http://book.youkuaiyun.com/bookfiles/140/

 4.1继承的类型
4.1.1实现继承和接口继承
实现继承表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。
接口继承表示一个类型只继承了函数的签名,没有继承任何实现代码。
4.1.2多重继承
C#不支持多重实现继承。而C#又允许类型派生于多个接口。这说明,C#类可以派生于另一个类和任意多个接口。因为System.Object是一个公共的基类,所以每个C#类(除了Object类之外)都有一个基类,还可以有任意多个基接口。
4.1.3  结构和类
结构总是派生于System.ValueType,它们还可以派生于任意多个接口。
类总是派生于用户选择的另一个类,它们还可以派生于任意多个接口。

注意C#不支持私有继承,如果在类定义中没有指定基类,C#编译器就假定System.Object是基类。
class MyClass   //derives from System.Object
{}
4.2  实现继承
注意C#不支持私有继承
4.2.1  虚方法
把一个基类函数声明为virtual,该函数就可以在任何派生类中重写了
C#要求在派生类的函数重写另一个函数时,要使用override关键字显式声明
4.2.2  隐藏方法
如果函数定义相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual 和 override,派生类方法就会隐藏基类方法。
4.2.3  调用函数的基类版本
C#有一种特殊的语法用于从派生类中调用方法的基类版本:base.<MethodName>()。
4.2.4  抽象类和抽象函数
如果类包含抽象函数,该类将也是抽象的,也必须声明为抽象的。
C#允许把类和函数声明为abstract,抽象类不能实例化,而抽象函数没有执行代码,必须在非抽象的派生类中重写。
4.2.5  密封类和密封方法
C#允许把类和方法声明为sealed。对于类来说,这表示不能继承该类;对于方法来说,这表示不能重写该方法。
4.2.6  派生类的构造函数
构造函数的调用顺序是先调用System.Object,再按照层次结构由上向下进行,直到到达编译器要实例化的类为止。

向基类构造函数传递参数:
public class class1
{
 public class1(string msg)
 {
  MessageBox.Show(msg);
 }
}
public class class2:class1
{
 public class2(string name):base(name)
 {
  MessageBox.Show("def");
 }
}
class2 c1 = new class2("abc");

4.3  修饰符

public
 所有的类型或成员
 任何代码均可以访问该方法
 
protected
 类型和内嵌类型的所有成员
 只有派生的类型能访问该方法
 
internal
 类型和内嵌类型的所有成员
 只能在包含它的程序集中访问该方法
 
private
 所有的类型或成员
 只能在它所属的类型中访问该方法
 
protected internal
 类型和内嵌类型的所有成员
 只能在包含它的程序集和派生类型的代码中访问该方法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值