C# 高级编程 继承

来源:互联网 发布:日本it行业知乎 编辑:程序博客网 时间:2024/06/05 10:48

page 98 派生类的构造函数 


要实例化的类 的构造函数 并不能初始化类 还需要基类的构造函数

先 运行 基类的 构造函数 后 运行 派生类的 构造函数 

派生类 的 构造函数 可以在 执行过程中 访问 任何 基类 中的方法 ,属性 ,和任何其他成员 ,因为 在此之前,基类已经构造出来了 ,所有字段 也已经初始化 

class NeverCustomer: GenericCustom
{
private string referrerName;
private uint highCost;
public NeverCustomer(string name,string referrerName):base (name)
{
this.referrerName = referrerName;
Console.WriteLine("two string method");
}
public NeverCustomer(string name):this(name,"< none >")
{
Console.WriteLine("one string method");
}
}

class GenericCustom
{
private string name;
public GenericCustom(string name)
{
this.name = name;
Console.WriteLine("base method");
}
}

NeverCustomer custom = new NeverCustomer("Leo");


base method
two string method
one string method


访问修饰符  protected 只有 派生类才可以访问

internal 只能在包含他的程序集中访问该项

protected internal


不能使用 protected, private ,protected internal 修饰 类 ,因为在名称空间中是没有意义的

被嵌套的类类型 具有成员属性,可以使用这些修饰符


new 成员用相同的签名吟唱继承的成员

static 成员不作用于类的具体实例

virtual 成员可以由派生类重写 

abstract 抽象成员 定义了成员的签名,但没有提供实现代码

override 成员 重写继承的虚拟或抽象成员

sealed 作用于 类,方法或者属性 对于类 不能继承自密封类 

对于属性和方法 成员重写已继承的虚拟成员,但任何派生类中的任何成员都不能重写该成员,该修饰符必须与override 一起使用

extern 仅静态 DLLImport方法,成员在外部使用另一种语言实现


接口:

Dispose() 用于清理代码

接口只能包含 方法,属性 索引器和 事件的声明 不能有字段 和 构造函数

接口不能实例化,只能包含成员的签名

不允许声明关于成员的修饰符,接口成员总是公有的,不能虚拟,不能静态

从接口派生 完全 独立于 从 类派生

接口仅 表现成员的存在性, 类负责 确定这些成员是虚拟的还是抽象的,但只有在类本身是抽象 的,这些函数 才是抽象的

把类的实例 声明为 接口类型的 引用变量, 表示 它 可以 指向实现 这个接口的 任何类的任何实例

只能调用 接口中声明的方法 ,如果要调用实现类中的方法  就需要 强转 


接口可以引用任何实现该接口的类

 接口可以继承接口 

派生接口拥有基接口的所有成员 

实现派生接口的任何类 都必须实现 基 接口的所有方法 


C# 支持多接口继承 和 单实现 继承










原创粉丝点击