C#入门经典(第五版)学习笔记(三)

时间:2021-03-09 20:00:50

---------------面向对象编程简介---------------

UML表示方法:

  1)方框上中下三分

  2)上框写类名

  3)中框写属性和字段,例如:+Description:string +公共成员-私有成员  Description成员名  string成员类型

  4)下框写方法,例如:+AddSugar(in amount:byte):byte +公共成员-私有成员 in/out/inout数据流方向

  5)静态成员带下划线

  6)接口:画在类名边,棒棒糖型

  7)继承:从子类向父类的箭头

构造函数: 构造函数与类同名,默认构造函数无参数,可定义带参数的非默认构造函数

静态成员: 静态成员可在类的实例间共享,可看做类的全局对象

 

---------------定义类---------------

class关键字定义类

类的修饰符关键字:

  public/protected/private  公共类/受保护类/私有类

  abstract/sealed  抽象类(不能实例化,只能继承)/密封类(不能继承)

 

继承: 先继承基类,然后才能指定支持的接口,不得反转,接口可支持多个

 

interface关键字定义接口

接口的修饰符关键字:

  public  公共接口

 

---------------定义类成员---------------

可用关键字static,表示静态成员

 定义字段可用关键字readonly,表示只能在执行构造函数过程中赋值,或由初始化赋值语句赋值

 定义方法关键字:

  virtual——方法可重写

  abstract——方法必须在非抽象的派生类中重写(只用于抽象类中)

  override——方法重写了一个基类方法

  extern——方法定义放在其他地方

 定义属性可用get{}set{}代码块,可用virtual/override/abstract关键字

 

显式隐藏基类方法:

 1 public class MyBaseClass
 2  {
 3      public void DoSomething()
 4      {}
 5  }
 6  public class MyDerivedClass : MyBaseClass
 7  {
 8      new public void DoSomething()
 9      {}
10  }

注意隐藏和重写的区别

 

接口的实现:

 1)所有接口成员都是公共的

 2)接口成员不能包含代码体

 3)接口不能定义字段成员

 4)接口成员不能用关键字static/virtual/abstract/sealed来定义

 5)类型定义成员是禁止的

在类中实现接口:

 实现接口的类必须包含该接口所有成员的实现代码,且必须匹配指定的签名(包括匹配指定get和set块),并且必须是公共的

 可用关键字virtual或abstract来实现,也可在基类上实现接口

 如果显式实现接口成员,那该成员就只能通过接口来访问,不能通过类来访问

 例如:

1 public class MyClass:IMyInterface
2 {
3      public void IMyInterface.DoSomething()
4      {}
5      public void DoSomethingElse()
6      {}
7 }

由于DoSomething()是显式实现的,而DoSomethingElse()是隐式实现的,之后后者可以直接通过MyClass的对象实例来访问。

 

部分类定义:

 把类的定义放在多个文件中,需要对每个此类的定义文件中使用partial关键字 例如:

1 public partial class MyClass
2 {
3 4 }

在另一个文件中

1 public partial class MyClass 2 { 3 4 }