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

来源:互联网 发布:itunes软件官方下载 编辑:程序博客网 时间:2024/06/03 21:12

C#高级编程(第4版)

http://book.csdn.net/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
 类型和内嵌类型的所有成员
 只能在包含它的程序集和派生类型的代码中访问该方法

原创粉丝点击