4继承和多态.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4继承和多态

第4章 继承与多态 4.1继承 一个类总能够访问自己的数据成员和成员方法。 其他类是否能访问这个类的数据成员或成员方法? 类的访问控制符 类数据成员和成员方法的访问控制符 访问控制符只能用于 修饰类、 类的数据成员 类的成员方法 继承是一种由已有的类创建新类的机制。 利用继承,可以先创建一个拥有共有属性的一般类,根据该一般类再创建具有特殊属性的新类 新类自动拥有一般类的属性和行为, 根据需要可以增加新的属性和行为, 可以改变一般类的行为以适合新类。 称拥有共有属性的一般类为父类(超类、基类),称利用父类创建出的新类为子类(派生类)。子类拥有父类的全部或部分属性与行为,称作子类对父类的继承。 继承所表达的就是一种对象类之间的相交关系,在继承中子类和父类所表现的关系是“是一种”(is a)关系。 一般来说,继承具有如下特征: (1)继承关系是传递的。 (2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。 (3)继承提供了软件复用功能。 多继承机制:在现实世界里,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性和行为,这就是多继承。在C++中支持多继承的概念,Java出于安全性和可靠性的考虑,仅支持单继承,每个类只能有一个直接父类,而通过使用接口机制与单继承来实现多继承。 封装反映了事物的相对独立性,封装的程度越高,事物的独立性也就越强;反之,事物的独立性则越弱。 一般来说,封装的作用是防止外界对该对象的内部数据(一般是数据成员)随意读取。同时,由于这些内部数据不能随意读取,即使对这些数据做了某些修改,也不会影响外界对该对象的访问。 四种访问级别就能有效的控制对象的封装程度,对于对象的数据成员和成员方法,哪些应该公开,哪些应该隐藏,具体的问题还应具体分析。 子类可以继承父类中的所有非private类型的数据成员 子类可以继承父类中的所有非private类型的成员方法。 (2)成员方法的覆盖 子类中也可以定义与父类完全相同的成员方法 不过这时候与数据成员不同,成员方法会发生覆盖现象。 “完全相同” 是指两个成员方法应具有相同的方法名、参数列表和返回值类型 而方法的访问控制符可以不完全相同,但必须满足“子类方法不能缩小父类中被覆盖方法的访问权限” 如父类方法的访问权限为public,则子类方法不能是private、protected等访问权限。 相对this来说,super表示的是当前类的直接父类对象,是当前对象的直接父类对象的引用。 这就使得我们可以比较简便、直观地在子类中引用直接父类数据成员和成员方法。具体的访问形式为: 4.1.7 继承中的构造方法 子类构造方法的继承应遵循以下原则: 编写子类的构造方法时,要调用父类的构造方法初始化父类的属性。 使用父类的构造方法初始化父类的属性 super(参数);//方法体内第一条可执行语句 若没有显示调用父类构造方法,系统自动调用父类的缺省构造方法。 若不为子类写构造方法,系统会创建缺省的构造方法,且会自动调用父类的无参构造方法。 下面根据现实中的多态现象来总结在Java中使用多态需要注意的问题。 (1)保罗本身不会改变,不管你说它是鲨鱼还是鱼,实际上它就是由鲨鱼这个类产生的一个类对象,而不是由鱼这样一个类产生的类对象。 (2)当你将保罗当鱼来看时,那么你就只能使用和访问鱼这样一个类所提供的数据成员和成员方法,就好比我们见到保罗时发现它有鱼的基本特征,我们将其视为一条鱼,那么我们自己是无法得知这实际上是条鲨鱼,它与普通鱼所不同的是,它有非常强的攻击性 继承层次上的类型转换 向上转型:父类引用指向子类类对象(子类赋值给父类)。 向下转型:子类引用指向父类类对象(父类赋值给子类)。 类似于基本类型:在继承结构中,向取值范围大的方向可以自动转换 在类继承中,父类表示的范围更大,因此,向上转型系统自动完成(所以子类对象可以给父类赋值) 反之,向下转型不允许,但可以强制类型转换(应用于父类引用确实指向子类对象情况,否则运行时异常)。 (4)instanceof运算符 对象 instanceof 类类型 用于判断某个类对象是否为某个类的实例 import java.awt.Graphics; import java.applet.Applet; interface Shape{ public abstract void draw(Graphics g); } class Circle implements Shape{ int x,y,r; Circle(int x1,int y1,int r1){ x=x1; y=y1; r=r1; } public void draw(Graphics g){ g

文档评论(0)

3471161553 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档