本章的主要对如何设计类做了一个比较全面的讲述。谦虚一点讲,其实更多是在讲述面向对象中的三大要素(封装、继承、多态),而这个过程中第一件是如何设计类。对于类来说,这里再次提一下,类就是现实中事物所有的特性和操作的模板。事物的特征就抽象为类的属性,而事物的动作以及操作这个事物的行为都抽象为类中的方法。
下面将本章所讲的全部知识点做一个罗列和整理(由于本章是整个C#的基础知识,重中之重,所以本章的总结比较多),因为前面讲的时候更多是顾及初学者的思维方式,所以并未将各知识点很干净放在一起。你可以参照下面的知识点罗列再好好的整理下你的学习成果。
1. 类中的数据和函数称为类的成员。
· 数据成员包含:字段、常量和事件。
· 函数成员包括:方法、属性、构造函数和析构函数、运算符以及索引符。
2. 使用new关键字可以建立类的一个实例。
Customer c; // 创建一个类的对象引用
c=new Deposit(); // 创建对象
或者
Customer c= new Deposited();
3. 静态变量和实例变量
· 带有”static”修饰符声明的变量称为静态变量。
· 不带有”static”修饰符声明的变量称为实例变量。
4. 只读字段和常量字段
· 只读字段可以在构造函数中才赋值。“readonly”是只读字段的关键字。
· 常量字段只能在声明时赋值常量说明前还加const 保留字;
5. 名称空间是.NET避免冲突的一种方式,名称空间可以按逻辑对类进行划分。
6. 名称空间的申明:
Namespace qualified-identifier namespacebody ;
名字空间隐式地使用public修饰符,在使用时不允许出现任何访问修饰符。
7. 名称空间的声明可以采用嵌套的方式和非嵌套的方式。
8. 组件是一个或多个类的集合体,在.NET中组件又被称为程序集(assembly)。
9. 组件的引用:
· 在同一个解决方案内,
· 在不同解决方案里面使用。
10. 封装是把类的内部隐藏起来,以防止外部世界看见的一个面向对象的概念。
11. 通常采用的访问修饰符有五种:
· public :全公开
· protected:给当前类的儿孙类公开
· internal protected:本项目中的儿孙类公开
· internal:本项目内部公开
· private:除了本类中,对外完全封闭
12. C#只允许单继承。
13. 继承性的语法:
public class soldgoods:goods
14. 多态性是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
15. 多态性的作用:
· 增强了操作的透明性
· 可理解性和可扩展性
· 增强了软件的灵活性和重用性。
16. 多态性通过派生类覆写基类中的虚函数型方法来实现。
17. C#支持两类多态性:
· 编译时的多态性
· 运行时的多态性
18. 虚方法是指类中的方法声明前加上virtual修饰符:
public virtual bool Withdraw(…);
19. 重载的特点是(两必须一可以):
· 方法名必须相同
· 参数列表必须不相同
· 返回值类型可以不相同
20. 重写(覆写)的语法:
public override bool Withdraw(…)
覆写的时候我们使用的是关键字override来完成的
在覆写的时候要三个要求(三相同):
· 相同的方法名称
· 相同的参数列表
· 相同的返回值类型
21. 类中包含抽象方法,那么类就必须定义为抽象类。
· 抽象方法声明的基本的语法是:
public abstract bool Withdraw(…);
22. C#中所有的类都直接或间接继承自System.Object类,这使得C#中的类得以单根继承。
23. 接口(interface)用来定义一种程序的协定。
24. 构造函数是类的一种特殊方法。
· 构造函数的方法名和类名相同;
· 构造函数没有返回类型;
· 构造函数的主要作用是完成对类的对象的初始化工作;
· 在创建一个类的新对象时,系统会自动调用该的构造函数初始化新对象;
· 如果没有显式定义,那么系统提供一个不带任何参数的Public的构造函数。
25. C#的类有两种构造函数:实例构造函数和静态构造函数。
· 不带参数的构造函数: public product()
· 带参数的构造函数:public product(int t,string r)
26. 构造函数可以重构。
27. 构造函数可以相互转换。
28. 属性 :
· 自动使用get 标识符进行读;
· 自动使用set 标识符进行写。
问题:
1. 举一个实例化方法的例子?
2. 静态变量和实例变量的区别是什么?
3. 只读字段和常量字段的区别是什么?
4. 动手创建一个students类库,将它生成组件。并且分别在不同和相同的解决的方案中引用这个组件。
5. 封装性的访问限制符有些什么?各代表什么意义?
6. 继承性的概念是什么?
7. 如何实现继承?如何访问基类成员?
8. 下列对象引用正确的有哪些?
CheckAccount ca = new CheckAccount();
Account acc = new CheckAccount(); ?
CheckAccount ca2 = acc ?
9. 重载和覆写有什么差别?
10. 如何使用接口?
11、C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数的时候,还想保留这个无参数的构造函数,这样我应该写几个构造函数?
12、构造函数有什么用?
13、使用构造函数的重载显示教师输入的学生信息。