项目5 面向对象的C# 任务5.2-面象对象程序设计的特征(课件)-《C#程序设计基础》(河海大学出版社)同步精品课堂
|
12页
|
115人阅读
|
0人下载
精品
内容正文:
C#
项目5面向对象的C#
制作:孔艳丽
2024年2月
2010版
C#
项目5面向对象的C#
类和对象的概念
类的创建
任务5.1创建简单的购物车类
对象的创建和访问
静态成员
封装
任务5.2设计一个车辆基类和派生类
继承
项目5面向对像的C#
多态
构造函数的概念
任务5.3显示汽车基本信息
构造函数的分类
构造函数的调用
使用this访问属性
任务5.4编写班级通讯录
使用this调用成员方法
使用this调用构造函数
2010版
C#
任务5.2设计一个车辆基类和派生类
面向对象程序设计有三个特点:封装、继承、多态。
5.2.1封装
封装,简单来说就是套一个壳来隐蔽细节。比如电脑,程序员只需要知道怎么开机、怎么通过键
盘和鼠标与计算机进行交互,而不必关心机箱内部CPU、显卡、内存等这些元件如何工作。
在C#中,封装就是将数据和操作数据的代码封装到一个单元中,以隐藏它们的具体实现细节,
程序员只需要关注这个单元的接口,而不需要了解它的内部实现。
封装是面向对象程序设计的核心思想,而将对象的属性和行为封装起来的载体就是类。属性是类
的公共接口,它提供了一种封装字段的方法,使得外部代码可以安全地访问和修改字段的值。
2010版
C#
任务5.2设计一个车辆基类和派生类
【说明】
5.2.1封装
①访问修饰符的作用与类访问修饰符相同。
②get、set称为属性访问器,set访问器负责设置数据,
属性包括两个部分:get访问器
set访问器总是拥有一个单独的的值参数,名称为value,
和set访问器,分别用于获取和设置
value表示调用属性时给属性赋的值。get访问器负责获取
字段的值。
数据,get访问器没有参数,拥有一个与属性类型相同的返
【格式】
回值。get访问器最后必须执行一条returni语句,返回一个
与属性类型相同的值。
访问修饰符class属性名
③在属性代码中,同时有get和set方法,则该属性称
{
为读写属性;如果只有set方法,而没有get方法,则该属
get{return字段名;》
set{字段名=value;}
性称为只写属性;如果只有get方法,而没有set方法,则
该属性称为只读属性。
2010版
C#
任务5.2设计一个车辆基类和派生类
public class Person
{
5.2.1封装
private string name;
川私有字段,只能在类内部访问
public string Name
∥公共属性,对外部代码可见
get return name;
【例5-6】字段与属性的区别。
set name value;
在例题中,Main方法中的代码属
于外部代码。在外部代码中,我们可
public class Program
以通过person.Name来访问Person
{
类的公共属性Name,从而获取和设
public static void Main()
{
置名称。但是,外部代码无法直接访
Person person=new Person();/∥外部代码通过属性访问类的成员
问私有字段name。所以,通过属性,
person.Name="ohn";∥设置名称
Console.WriteLine(person.Name;/∥输出名称
外部代码可以安全地访问和修改字段
∥下面的访问将会引发错误,因为字段name是私有的
的值,而无需直接访问私有字段。
/person.name ="Smith";
2010版
C#
任务5.2设计一个车辆基类和派生类
5.2.2继承
继承是从现有的类中派生出新类的功能,通过继承可以创建类的层次结构,在面向对象编程中
达到代码复用的目的。现实世界中存在着各种继承关系。
动物
哺乳动物
鸟类
鱼类
软体动物
猫狗
金鱼
鲤鱼
在类的继承中,被继承的类称为基类或父类,继承的类称为派生类或子类。派生类会从其基类
中继承得到所有的操作、属性、事件以及其实现方法。而且可以在派生类中添加新的属性和方法。
2010版
C#
任务5.2设计一个车辆基类和派生类
5.2.2继承
类可以继承自其他类。在类的定义中,可
【说明】
以通过在基类名的前面加冒号来表示继承。其
①"访问修饰符”可以是oublic、internal、.
语法格式为:
protected、private,省略不写则默认internal。.
②“派生类的类名”(子类的类名)是新定义
访问修饰符class派生类的类名:基类的类名
的一个类的名字,“基类的类名”(父类的类名)
是已经定义的类名。
派生类的成员,
③“类成员”是在派生类中新定义的类成员。
2010版
C#
任务5.2设计一个车辆基类和派生类
class Program
5.2.2继承
∥基类Vehicle
public class Vehicle
{
public string Color{get;set;}∥车辆的颜色
public string Brand{get;set,}∥车辆的品牌
public string Model{get;set;}/∥车辆的型号
public int Mileage get;set;
川车辆的行驶里程
设计一个车辆基类和派生类
∥派生类car,继承自基类Vehicle
public class Car:Vehicle
{
public string CarType{get;set;}∥汽车类型(如嚎华车、经济车等)
/∥派生类Truck,继承自基类Vehicle
public class Truck Vehicle
public int LoadCapacity{get;set;}/∥载重能力
2010版
C#
任务5.2设计一个车辆基类和派生类
5.2.3多态
多态,就是多种形态。比如,利用图形类(一般类)的绘制图形的方法,可以绘制出不同的图
形(特殊类),如正方形、矩形、平行四边形等,这就是多态思想最基本的体现。
多态性是指在子类中可以对父类中某个方法或者属性等成员进行重新的定义,又可以叫作虚成
员重载。
虚成员重载测是指将父类的某个方法在子类中重新定义,方法名称和方法的参数列表都不改变。
虚成员重载分为两步。第一步,在父类中利用virtual保留字来定义虚成员。第二步,在子类中
重新定义虚成员,即在成员名称之前加override保留字。
2010版
C#
任务5.2设计一个车辆基类和派生类
5.2.3多态
【例5】编写一个求解各种几何体表面积的程序。
分析:几何体包括平面几何体和立体几何体。其中平面几何体以矩形为例,立体几何体以圆柱
体为例。
(1)立体几何体都是由若干个平面几何体组成的,所以将所有的立体几何体都从平面几何
体一
矩形类中派生。
(2)首先给出描述矩形的类。一个矩形有两个边长a和b,求面积的方法定义为虚方法,便于
子类对其进行重载。
(3)然后利用类描述一下圆柱体,圆柱体也可以用两个数据来表示,一个是半径r,另一个是
圆柱的高h。可以用Rectangle类的两个数据a和b来表示圆柱体的两个数据r和h。这样,在圆柱体
类内就不用再定义描述圆柱体的变量了。求圆柱体表面积的方法通过重载Rectangle类求矩形面积
的方法就可以了。圆柱体类可以被命名为Cylinder。
2010版
资源预览图