C#__面向对象编程
C#__面向对象编程;
一、类的构建,类的成员,类的封装,方法的重载:
1、类的成员:
成员变量
成员函数
属性(新的东东)
2、成员的访问控制:
(私有成员)private(默认的访问控制) 类内部
(保护成员)protected 类内部,子类
(内部成员)internal 类内部,子类,包(相同命名空间)
(公有成员)public
3、构造函数及构造函数的重载
4、方法的重载
在一个类的内部
方法名相同
参数不同(类型,顺序,数量)
5、属性:
1)属性是类中定义的,和成员变量对应的变量
2)属性主要解决了私有成员变量的访问控制(读写属性,只读属性,只写属性)
3)属性定义格式 :
public 类型 属性名
{
get{return 成员变量}
set{成员变量 = value}
}
4)属性中的get,和set不需要,显式的调用,而根据用户的操作来自动选择一个执行;
/************************
案例:
1、定义简单的人类,三个成员变量,没有方法;
2、定义简单的人类,三个参数,实现2个构造函数和一个show
3、定义简单的数学类,实现2个数相加各类型重载函数;
4、定义一个简单的用户类(用户名密码)用java式的方法封装,然后测试;
4_1、对上一题,用类的属性的方式,实现对成员变量的封装;
任务:
1、定义一个书籍类Book,成员变量(编号,名称,价格),成员方法(全参构造,空参构造,show)
然后在,Program类中测试;
2、定义一个计算类,实现一个整数加法的静态方法(分别实现求2个整数,3个整数,4个整数,整形数组求和的重载方法)
然后在,Program类中测试;
3、定义一个银行用户类,成员变量(帐号,密码,年龄,住址,余额),成员函数(空/全参构造,getts,setts方法,show)
然后在,Program类中测试;
4、定义一个银行用户类,成员变量(帐号,密码,年龄,住址,余额),成员函数(空/全参构造,show),属性(所有的成员变量的读写属性)
然后在,Program类中测试;
***********************/
二、namespace,using
三、继承
1、继承的语法实现:
class 子类名 : 基类名{}
2、子类构造方法的实现,及base关键字的使用; ---super
1)通过base子类可以访问基类的成员,
2)在子类的构造方法中可以通过 base来访问基类的构造方法:
public 子类构造(参数列表) : base(参数列表)
{
}
3、方法的重写(覆盖)
public 返回值类型 方法名(); //会出现警告的
OR
new public 返回值类型 方法名();
如果,new 后面的方法声明,不构成对父类方法的覆盖,不会报错, 但会有警告
总结:
override:如果被重写方法时virtual,abstract
new,除此以外,重写都可以用new ,或者不写
4、虚函数virtual和多态的实现;
虚函数(virtual):主要目的就是为了让子类重写,这样的方法可以有方法体
abstract
子类的重写格式 :
override 返回类型 方法名()
5、抽象方法和抽象类abstract
抽象方法和虚方法的区别;
6、密封类和密封方法sealed --类似java中的 final
密封的方法不能被重写,
密封的类不能被继承
sealed针对的时子类,以及子类重写的方法
7、常量的定义:
语法:
public const 类型 常量名称 = 值; //常量一定是全局的因此不能使用static ,加了算错
任务:
1、实现以下类的定义
1)定义一个人类封装以下成员
成员变量(编号,姓名,年龄)
成员方法(空/全参构造,show)
属性
2)定义一个学生类继承人类
成员变量(班级)
成员方法(空/全参构造,show)
属性
3)定义一个教师类继承人类
成员变量(专业)
成员方法(空/全参构造,show)
属性
4)Program测试类,测试学生类,和教师类的所有方法;
2、实现以下类的定义,
1)定义一个动物类封装以下成员
成员变量(名称)
成员方法(空/全参构造,吃、show(虚方法))
属性
2)定义一个猫类继承动物类
成员变量(颜色)
成员方法(空/全参构造,重写吃、show)
属性
3)定义一个鱼类继承动物类
成员变量(重量)
成员方法(空/全参构造,重写吃、show)
属性
4)Program测试类,用动物类的引用来测试猫类、鱼类对象的所有方法;
3、实现以下类的定义,
1)定义一个形状类封装以下成员
成员变量(常量:圆周率)
成员方法(抽象的求面积、求周长)
2)定义一个圆形类继承形状类
成员变量(半径)
成员方法(空/全参构造,以及其他必须实现的方法)
属性
3)定义一个长方形类继承形状类
成员变量(长,宽)
成员方法(空/全参构造,以及其他必须实现的方法)
属性
4)Program测试类,测试圆形类和长方形类;
4、将上一题中的圆形类中的面积,周长的方法设着成为密封的,然后创建该类的子类测试该方法是否能被重写;将长方形类设置成为密封得,测试这个类是否能被继承;