Java的继承与多态.PPT

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

4.1 Java的继承与多态 4.1.1 继承与多态的概念 (1)继承 继承是存在于面向对象程序中两个类之间的一种关系,通过Extends关键字来实现,被继承的类称为父类或超类,继承了父类的所有数据和操作的类称为子类。新定义的子类可以从父类继承所有非private的属性和方法作为自己的成员。一个父类可以同时拥有多个子类。 单重继承:任何一个类都只有一个单一的父类。 程序结构为树状,比较简单。 多重继承:一个类可以有一个以上的父类,其静态的 数据属性和操作从所有这些父类中继承。 程序结构为网状,比较复杂。 图 4.1 各种电话卡类及其间的继承关系 在面向对象的程序设计中,采用继承的机制来组织、设计系统中的类的优点: 可以提高程序的抽象程度,使之更接近于人类的思维方式; 使得程序结构清晰,降低编码和维护的工作量。 注意: Java只支持单重继承,而采用接口来实现多重继承。 (2)多态 多态是指一个程序中同名的不同方法共存的情况。 实现多态的途径: 1)覆盖( override )——在子类中对从父类继承的方法进行重新定义,即重写。 2)重载( overload )——在同一个类中定义多个同名的定义内容不同但最终功能相同的方法。 比如,程序中定义多个名为 print方法,用来打印不同类型的数据,如字符型、数值型等。 区分同名方法的措施:采用不同的形式参数列表,包括形式参数的个数、类型、顺序的不同。 注意:只是改变方法的返回值类型不改变参数是不行的。 4.1.2 属性的继承与隐藏 (1)属性的继承:子类从父类继承属性而不是把父类属性的定义部分复制一遍,可以减少程序维护的工作量。 (2)属性的隐藏:对子类从父类继承来的属性变量重新加以定义。 即:子类定义了与父类同名的属性变量,即出现了子类变量对同名父类变量的隐藏。 区别: 子类执行继承自父类的操作时,处理的是继承自父类的变量。 子类执行它自己定义的方法时,操作的是自己定义的变量,而把继承自父类的变量“隐藏”起来。 例: TestInherit.java import java.util.*; public class TestInherit //测试类的继承,属性的继承与隐藏 { public static void main(String args[]) { D200_Card my200 = new D200_Card(); //有卡号的200卡 my200.balance = 50.0; System.out.println(“父类被隐藏的金额为:”+my200.getBalance()); //执行继承自父类的方法,操作父类的变量 System.out.println(子类本身的金额为:+my200.balance); System.out.println(子类继承的密码为:+my200.password); if(my200.performDial()) //执行子类实现了的抽象方法,操作子类的变量 System.out.println(子类的剩余金额为:+my200.balance); System.out.println(父类被隐藏的金额仍为:+my200.getBalance()); } } abstract class PhoneCard //定义电话卡抽象类 { double balance=60; //公共属性 abstract boolean performDial(); double getBalance() { return balance; } } abstract class Number_PhoneCard extends PhoneCard // 定义有号电话卡抽象类 { long cardNumber; int password=111; String connectNumber; boolean connected; boolean performConnection(long cn,int pw) { if(cn == cardNumber pw == password) { connected = true; return true; } else return false; } } class D200_Card extends Number_PhoneCard //定义200卡,有号电话卡抽象类的子类 {

文档评论(0)

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

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

1亿VIP精品文档

相关文档