基于C#语言进行面向对象编程(二).ppt
《基于C#语言进行面向对象编程(二).ppt》由会员分享,可在线阅读,更多相关《基于C#语言进行面向对象编程(二).ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章 继承、多态继承、多态继承继承继承的基本概念继承的基本概念basebase关键字关键字protectedprotected访问修饰符访问修饰符继承的特点继承的特点多态多态多态的基本概念多态的基本概念抽象类抽象类抽象方法及实现抽象方法及实现虚方法以及方法的重写虚方法以及方法的重写判断对象类型判断对象类型里氏替换原则里氏替换原则本章目标本章目标代码冗余代码冗余对比这两个类:Student 和 Teacher加入校长、班主任的类,都需要加入这几个属性,代码冗余。加入校长、班主任的类,都需要加入这几个属性,代码冗余。年龄、性别、年龄、性别、姓名是重复的姓名是重复的如何共用重复代码?如何共用
2、重复代码?提取冗余代码提取冗余代码将公共的成员放将公共的成员放到一个类中到一个类中保留自己特有保留自己特有的成员的成员保留自己特有保留自己特有的成员的成员提取后的应用提取后的应用class Student:Person public Student()/爱好爱好 private string hobby;public string Hobby get return hobby;set hobby=value;1、提取后的、提取后的Student类类只有学员特只有学员特有的属性有的属性2、创建一个学员对象、创建一个学员对象Student zhang=new Student();zhang.Nam
3、e=张靓靓张靓靓;zhang.Age=20;zhang.Gender=Genders.Female;zhang.Hobby=唱歌歌唱歌歌;公共属性可以访问公共属性可以访问继承继承卡车和巴士都是汽车卡车和巴士都是汽车 生活中的继承生活中的继承汽车汽车 刹车刹车行驶行驶共有行为:共有行为:轮子轮子发动机发动机共有特征:共有特征:卸货卸货拉货拉货各自行为:各自行为:载重载重货舱货舱各自特征:各自特征:停靠站停靠站报站报站各自行为:各自行为:载客量载客量客舱客舱各自特征:各自特征:他们共有的特征他们共有的特征来自汽车来自汽车有什么共同有什么共同特征呢?特征呢?卡车卡车 公共汽车公共汽车 继承的基本概念
4、继承的基本概念父类和子类父类和子类在C#中,一个类可以继承另一个类Person 子类继承父类,父类派生子类学员和老师类都继承学员和老师类都继承PersonStudent Teacher 子类子类 父类父类 Student类继承类继承Person类类Person类派生类派生Student类类子类又叫子类又叫派生类派生类父类又叫父类又叫基类基类class Student:Person继承概述继承概述继承需要符合的关系继承需要符合的关系:is-aStudent is a Person子类继承父类的成员子类可以有自己的成员继承父类的继承父类的成员成员自己特有的自己特有的成员成员继承是面向对象的一个重要
5、特性继承在类图中继承在类图中的表示的表示继承的实际应用继承的实际应用1班上所有的人都做自我介绍班上所有的人都做自我介绍SayHi()学员学员 大家好,我是某某同学,今年多少岁,喜欢什么大家好,我是某某同学,今年多少岁,喜欢什么老师老师 大家好,我是某某老师,今年多少岁,工作几年了大家好,我是某某老师,今年多少岁,工作几年了子类中访问继承父类子类中访问继承父类的公共属性的公共属性子类特有属性子类特有属性继承的实际应用继承的实际应用2公共属性加入父类公共属性加入父类有独自的有独自的SayHi继承的实际应用继承的实际应用3Teacher和Student类都继承Personpublic class S
6、tudent:Personpublic class Teacher:Personpublic Student(string name,Genders gender,int age,string hobby,int popularity)this.Name=name;this.Age=age;this.Gender=gender;/学生类扩展的属性学生类扩展的属性 this.Hobby=hobby;this.Popularity=popularity;构造函数设置公共属构造函数设置公共属性与独有属性性与独有属性继承自父类的公共属性继承自父类的公共属性子类扩展的属性子类扩展的属性继承的实际应用继承
7、的实际应用4都有不同的SayHi方法public void SayHi()/学生的学生的SayHipublic void SayHi()/老师的老师的SayHi创建对象调用SayHiStudent zhang=new Student();Teacher jacky=new Teacher();zhang.SayHi();jacky.SayHi();学生调用自己的学生调用自己的SayHi 老师调用自己的老师调用自己的SayHi base关键字关键字关键字base的作用调用父类的属性和方法调用父类的构造函数public void SayHi()string message=string.Forma
8、t(大家好,我是大家好,我是0 同学,今年同学,今年1 岁了,我喜欢岁了,我喜欢2!,base.Name,base.Age,this.hobby);MessageBox.Show(message);调用父类的调用父类的属性属性public Student(string name,Genders gender,int age,string hobby,int popularity):base(name,age,gender)/学生类扩展的属性学生类扩展的属性 this.Hobby=hobby;this.Popularity=popularity;this.Name=name;this.Age=a
9、ge;this.Gender=gender;调用父类的构调用父类的构造函数造函数隐式调用父类的构造函数隐式调用父类的构造函数Person类中去掉了构造函数类中去掉了构造函数public Person()“Person”方法没有采用方法没有采用“0”0”个参数的重载个参数的重载class Student:Person public Student()public Student(string name,Genders gender,int age,string hobby,int popularity)base()隐式的调用隐式的调用base()子类的构造函数没有使用子类的构造函数没有使用 ba
10、se 指明调用父类哪个构造函数指明调用父类哪个构造函数 父类要提供无参的构造函数父类要提供无参的构造函数显示调用父类的构造函数显示调用父类的构造函数如果父类没有无参的构造函数子类构造函数必须指明调用父类哪个构造函数子类构造函数必须指明调用父类哪个构造函数public Student():base(张靓靓张靓靓,20,Genders.Female)public Student(string name,Genders gender,int age,string hobby,int popularity):base(name,age,gender)练习练习控制台程序实现汽车与卡车的继承汽车类Vehi
11、cle有一个方法vehicleRun()内容可以打印卡车类Truck有一个方法truckRun()内容也可以打印实例化一个卡车调用汽车和卡车的方法成员要用protected修饰汽车汽车(Vehicle)卡车卡车(Truck)练习参考答案练习参考答案public class Vehicle protected void vehicleRun()Console.WriteLine(汽车在行驶!汽车在行驶!);public class Truck:Vehicle protected void truckRun()Console.WriteLine(卡车在行驶!卡车在行驶!);static void
12、Main()Truck truck=new Truck();truck.truckRun();truck.vehicleRun();继承的特点继承的特点传递性(一)传递性(一)汽车汽车双层双层 单层单层 小型卡车小型卡车 重型卡车重型卡车 同样具有汽车同样具有汽车的特征的特征继承的传递性继承的传递性卡车卡车公共汽车公共汽车还可以派生还可以派生更多的类型更多的类型继承的特点继承的特点传递性(二)传递性(二)添加一个微型卡车类public class SmallTruck:Truck protected void smallTruckRun()Console.WriteLine(微型卡车在行驶!微
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C# 语言 进行 面向 对象 编程
限制150内