类的封装继承与多态.ppt

上传人:wuy****n92 文档编号:91523509 上传时间:2023-05-27 格式:PPT 页数:41 大小:832KB
返回 下载 相关 举报
类的封装继承与多态.ppt_第1页
第1页 / 共41页
类的封装继承与多态.ppt_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《类的封装继承与多态.ppt》由会员分享,可在线阅读,更多相关《类的封装继承与多态.ppt(41页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C#面向对象编程(二)继承、封装和多态9 继承、封装和多态ll 9.1 封装ll 9.2 继承ll 9.3 多态ll 9.4 this 和base 关键字ll 9.5 接口9.1 封装对象的原理l 什么是封装(encapsulation)u 封装的好处l 良好的封装能够减少耦合l 类内部的实现可以自由地修改l 类具有清晰的对外接口 类的封装改变了用户传统的使用数据和代码的方式.它将方法和数据包含在一起构成一个独立的单元,可以通过设定单元内各个成员的的特性来控制对成员的访问。比如将一个字段定义为private,就可以防止外界直接访问这个字段。数据隐藏l 封装性最有用的方式之一l 实现方法访问限制

2、修饰符public 无限制,允许任何人来访问protected internal=protected+internalInternal 允许项目或程序内部的类来访问protected 继承时子类可以对基类有完全访问权private 只允许同一个类中的成员访问l 属性也用来封装类的细节,并提供公用接口给该类的用户public class Student private string studentname;public string getstudentname()return(studentname);public string setstudentname(string na)student

3、name=na;class App public static void Main()Student s1=new Student();s1.setstudentname(“zhanghua”);Console.WriteLine(s1.getstudentname();不能使用语句s1.studentname=“zhanghua”;继承性(inheritance)l 一个类可以有能力直接从另一个类获得其代码和数据l 派生类从基类那里获得其所有的成员ll 例:l GUI 设计的Form look and feel 都是从.NET Form class 继承下来的Form1继承透视图l 如果Cl

4、ass Child 是继承Class Parent 而来 Child 的对象中包含一个Parent 的对象ChildParentpublic class Parent public int X;.public class Child:Parent public int Y;./client.Child obj;obj=new Child();obj.X=10;obj.Y=20;X:X:Y:Y:publicmethods如何访问基类成员?l 派生类可以调用基类的方法l 通过使用base 关键字l 派生类在访问基类的时候有一定的限制,不能访问 private 的成员;internal 的基类成员只

5、能被同一个程序集中的派生类访问public class Account public class Account public double balance;public double balance;public bool Withdraw(double public bool Withdraw(double amt)amt)balance-=amt;balance-=amt;return true;return true;public class CheckAccount:Account public class CheckAccount:Account public bool Withd

6、raw(double amt)public bool Withdraw(double amt)if(amt=if(amt=base base.balance).balance)return return base base.Withdraw(amt);.Withdraw(amt);else else return false;return false;继承 2-1Class Base/成员变量 int basevar;/成员函数 Base_fun1()/定义.Class Derived:Base/成员变量 int derivedvars;/成员函数 Derived_fun1()/定义.基类 v

7、oid main()Derived dr_obj=new Derived();dr_obj.Base_fun1();无需重新编写代码派生类狗 马继承 2-2动物基类派生类继承的层次结构示例Class Animal/成员变量 int eyes,nose;Animal()eyes=2;nose=1;void Pet_Animal()/定义 基类Class Dog:Animal/成员变量/成员函数 private Barking()/定义 private Wagging_Tail()派生类继承 C#中的类 public class Graduate:Student,Employee/成员变量/成员函

8、数 多重继承 允许多重接口实现C#只允许单一继承演示public class Person private string _name;private uint _age;public void GetInfo()Console.WriteLine(请输入您的姓名和年龄);_name=Console.ReadLine();_age=uint.Parse(Console.ReadLine();public void DislayInfo()Console.WriteLine(尊敬的 0,您的年龄为 1,_name,_age);public class Student:Person private

9、string _schoolname;private uint _engscore;private uint _mathscore;private uint _sciscore;private uint _totscore;public uint GetMarks()Console.WriteLine(“请输入学校名称);_schoolname=Console.ReadLine();Console.WriteLine(请输入英语、数学和自然科学的分数。);_engscore=uint.Parse(Console.ReadLine();_mathscore=uint.Parse(Console.

10、ReadLine();_sciscore=uint.Parse(Console.ReadLine();_totscore=_engscore+_mathscore+_sciscore;Console.WriteLine(所得总分为:0,_totscore);return _totscore;基类派生类public class UnderGraduate:Student public void Check()Console.WriteLine(要上升一级,要求总分不低于 150);if(this.GetMarks()=150)Console.WriteLine(“pass);elseConsol

11、e.WriteLine(“not pass);派生类public static void Main(string args)UnderGraduate objUnderGraduate=new UnderGraduate();objUnderGraduate.GetInfo();objUnderGraduate.DisplayInfo();objUnderGraduate.Check();ubasel用于从派生类中访问基类成员 l可以使用 base 关键字调用基类的构造函数uthisl用于调用本类的数据成员或方法l也可以不写 关键字 base和this构造函数1.构造函数不能继承2.在实例化子类对象时,会默认调用父类构造函数3.如果父类有多个构造函数,子类会默认调用无参的构造函数4.如果需要调用有参的默认函数,需要显示指明,需要使用base 关键字

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com