C#与.net3.0高级程序设计(特别版)---第四章:C#2.0面向对象编程

4.1 C#的类类型

4.1.1方法重载

当一个类有一系列用参数的数量(或类型)区分的同名成员方法时,就说一个成员被重载。(不可用返回值区分,由于调用时不涉及返回值)。

4.1.2使用C#的this进行自引用

1.解决了类成员和局部变量的重名问题。

2.使用this进行转发构造函数调用。

注意:静态成员在其方法作用域内不能使用this关键字。因为静态成员函数在类(而不是对象)级别上操作,没有this!

4.1.3定义类的公共接口

公共接口即使用public关键字在类中声明的任何项。包括字段数据,构造函数,方法,属性,常量和只读字段(二者的区别)。

 

4.2回顾OOP(Object-Oriented Programming面向对象程序设计)的支柱

4.2.1 封装:怎样隐藏一个对象的内部实现?

4.2.2 继承:怎样促进代码重用?

4.2.3 多态:怎样让你的代码用同样的方式处理相关对象?

 

4.3第一个支柱:C#的封装支持

属性的优点:添加必要的业务逻辑,操作更加方便。

CIL内部实现:为某个属性添加隐藏的get_XXX()和set_XXX()方法。

4.3.4 控制属性get/set语句的可见性级别

4.3.5 只读和只写属性

4.3.6 静态属性(静态构造函数不带访问修饰符和参数)

public class Employee

{

  static Employee()

    {

      ....

    }

}

 

4.4第二个支柱:C#的继承支持

继承有两种:传统继承(is-a关系)和包含/委托模型(has-a关系)

4.4.1 使用base控制基类的创建

4.4.2 关于多基类

4.4.3 保护家族的秘密protected关键字

4.4.4 防止继承:密封类(seald)

4.5为包含/委托编程

 

4.6 第三个支柱:C#的多态支持

4.6.1 virtual和override关键字

4.6.2 再谈sealed关键字

sealed用到类型成员上,以防止虚成员将来被继承类型所重写。这在不想密封一个类,只想密封一些方法或属性时很有帮助。

4.6.3 抽象类

限制该类无法创建对象

4.6.4 强制多态活动:抽象方法

4.6.5 成员隐藏

如果一个派生类重定义了一个继承自积累的相同的成员,派生类就隐藏(或遮蔽)了父成员

1.使用override关键字修改父类的Draw版本。使用这种方式,ThreeDCircle可以按需扩展父类的默认行为。

2.使用new关键字修饰ThreeDCircle类型的Draw()成员。这样做显示的声明,派生类型的实现是明确设计为隐藏父类的版本的。

public class ThreeDCircle:Circle

{

  public new void Draw()

    {

      ...

    }

}

new 关键字也可以应用到任何继承自基类的成员类型上(字段、常量、静态成员、属性等)。例:

public class ThreeDCircle : Circle

{

  new protected string petName;

  new public void Draw()

  {...}

}

最后,要知道使用显示强制类型转换调用一个已遮蔽成员的基类实现仍然是可行的。例如:

static void Main(string args)

{

  ThreeDCircle o = new ThreeDCircle();

  o.Draw();        //调用ThreeDCircle.Draw();

  ((Circle)o).Draw();    //调用Circle.Draw();

}

4.7C#的类型转换规则

4.7.1确定Employee的类型

is关键字:返回一个代表积累引用是否与给定的继承类型兼容的布尔值。

as关键字:获得一个对继承类型的引用(如果类型间不兼容,引用被设置为null)。

 

4.7.2 数值类型转换

4.7.3 C#的分部类型

partial关键字:可以将一个类型的实现划分到多个C#文件中,例如,将所有的公共成员放在名为MyType_Public.cs文件中,把私有辅助函数定义在MyType_Private.cs文件中。

 

 

 

转载于:https://www.cnblogs.com/xiao-Y/archive/2010/05/09/1731071.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值