继承多态重载与接口

上传人:宝路 文档编号:48195836 上传时间:2018-07-11 格式:PPT 页数:157 大小:2.03MB
返回 下载 相关 举报
继承多态重载与接口_第1页
第1页 / 共157页
继承多态重载与接口_第2页
第2页 / 共157页
继承多态重载与接口_第3页
第3页 / 共157页
继承多态重载与接口_第4页
第4页 / 共157页
继承多态重载与接口_第5页
第5页 / 共157页
点击查看更多>>
资源描述

《继承多态重载与接口》由会员分享,可在线阅读,更多相关《继承多态重载与接口(157页珍藏版)》请在金锄头文库上搜索。

1、第五章第五章 继承、多态、重载与接口继承、多态、重载与接口2主要内容主要内容n nJavaJava的继承的继承n nJavaJava的多态的多态n nJavaJava的覆盖的覆盖n nJava Java 的重载的重载n n构造方法的重载与继承构造方法的重载与继承n n内部类与匿名类内部类与匿名类n n接口接口3继承的概念继承的概念n n继承是存在于面向对象程序中的两个类之继承是存在于面向对象程序中的两个类之 间的一种关系间的一种关系n n当一个类获取另一个类中所有非私有数据当一个类获取另一个类中所有非私有数据 和操作的定义作为自己的部分或全部成分和操作的定义作为自己的部分或全部成分 时,就称这

2、两个类之间具有时,就称这两个类之间具有继承关系继承关系n n被继承的类称为被继承的类称为父类父类或或超类超类,继承了父类,继承了父类 或超类的所有数据和操作的类称为或超类的所有数据和操作的类称为子类子类n n一个父类可以同时拥有多个子类一个父类可以同时拥有多个子类父类实际上是所有子类的公共域和公共方法的父类实际上是所有子类的公共域和公共方法的 集合集合每一个子类则是父类的特殊化,是对公共域和每一个子类则是父类的特殊化,是对公共域和 方法在功能、内涵方面的扩展和延伸方法在功能、内涵方面的扩展和延伸Java的继承4继承的概念继承的概念各种电话卡类及其间的继承关系Java的继承5单重继承与多重继承单

3、重继承与多重继承n n单重继承单重继承指任何一个类都只有一个单一的指任何一个类都只有一个单一的 父类父类n n多重继承多重继承是指一个类可以有一个以上的父是指一个类可以有一个以上的父 类,它的数据属性和操作从所有这些父类类,它的数据属性和操作从所有这些父类 中继承中继承n n单重继承的程序结构比较简单,支持多重单重继承的程序结构比较简单,支持多重 继承的程序,其结构则是复杂的网状,设继承的程序,其结构则是复杂的网状,设 计、实现都比较复杂计、实现都比较复杂n nC+C+是开发人员熟悉的支持多重继承的面向是开发人员熟悉的支持多重继承的面向 对象的编程语言,对象的编程语言,JavaJava语言出于

4、安全、可语言出于安全、可 靠性的考虑,靠性的考虑,仅支持单重继承仅支持单重继承Java的继承6JavaJava的派生子类的派生子类n nJavaJava中的继承是通过中的继承是通过extendsextends关键字来实现关键字来实现 的,在定义类时使用的,在定义类时使用extendsextends关键字指明新关键字指明新 定义类的父类,就在两个类之间建立了继定义类的父类,就在两个类之间建立了继 承关系承关系n n定义形式定义形式 class SubClass extends SuperClass class SubClass extends SuperClass 如果没有如果没有extends

5、extends子句,则该类默认为子句,则该类默认为 java.lang.Objectjava.lang.Object的子类的子类所以,所以,JavaJava中,所有的类都是通过直接或间接中,所有的类都是通过直接或间接 地继承地继承java.lang.Objectjava.lang.Object得到的得到的n n新定义的类称为子类,它可以从父类那里新定义的类称为子类,它可以从父类那里 继承所有继承所有非非privateprivate的属性和方法作为自己的属性和方法作为自己 的成员的成员Java的继承7JavaJava的派生子类的派生子类n n继承关系在继承关系在UMLUML图中,是用一个箭头来表

6、图中,是用一个箭头来表 示子类与父类的关系的示子类与父类的关系的n n类类StudentStudent从类从类PersonPerson继承,定义如下继承,定义如下 class Student extends Person class Student extends Person / Java的继承8派生子类实现电话卡类的继承结构派生子类实现电话卡类的继承结构1: abstract class PhoneCard 2: 3: double balance; 4: 5: abstract boolean performDial( ); 6: double getBalance( ) 7: retu

7、rn balance; 10: 11: abstract class None-Number-PhoneCard extends PhoneCard 12: 13: String phoneSetType; 14: 15: String getSetType( ) 16: 17: return phoneSetType; 18: 19: Java的继承9派生子类实现电话卡类的继承结构派生子类实现电话卡类的继承结构20: abstract class Number-PhoneCard extends PhoneCard 21: 22: long cardNumber; 23: int passw

8、ord; 24: String connectNumber; 25: boolean connected; 26: 27: boolean performConnection(long cn,int pw) 28: 29: if(cn = cardNumber 32: return true; 33: 34: else 35: return false; 36: 37: Java的继承10派生子类实现电话卡类的继承结构派生子类实现电话卡类的继承结构38: class magCard extends None-Number-PhoneCard 39: 40: String usefulArea;

9、 41: 42: boolean performDial( ) 43: 44: if( balance 0.9) 45: 46: balance -= 0.9; 47: return true; 48: 49: else 50: return false; 51: 52: Java的继承11派生子类实现电话卡类的继承结构派生子类实现电话卡类的继承结构53: class IC-Card extends None-Number-PhoneCard 54: 55: boolean performDial( ) 56: 57: if( balance 0.5) 58: 59: balance -= 0

10、.9; 60: return true; 61: 62: else 63: return false; 64: 65: Java的继承12派生子类实现电话卡类的继承结构派生子类实现电话卡类的继承结构66: class IP-Card extends Number-PhoneCard 67: 68: Date expireDate; 69: boolean performDial( ) 70: 71: if( balance 0.3 74: return true; 75: 76: else 77: return false; 78: 79: Java的继承13派生子类实现电话卡类的继承结构派生

11、子类实现电话卡类的继承结构80: class D200-Card extends Number-PhoneCard 81: 82: double additoryFee; 83: 84: boolean performDial( ) 85: 86: if( balance (0.5 + additoryFee ) 87: 88: balance -= (0.5 + additoryFee); 89: return true; 90: 91: else 92: return false; 93: 94: Java的继承14派生子类实现电话卡类的继承结构说明派生子类实现电话卡类的继承结构说明n n

12、代码定义了七个类代码定义了七个类None-Number-PhoneCardNone-Number-PhoneCard类和类和Number-PhoneCardNumber-PhoneCard类类 是是PhoneCardPhoneCard类派生出的子类类派生出的子类magCardmagCard类和类和IC-CardIC-Card类是类是None-Number-PhoneCardNone-Number-PhoneCard 类派生出的子类类派生出的子类IP-CardIP-Card类和类和D200-CardD200-Card类是类是Number-PhoneCardNumber-PhoneCard类派类派

13、 生出的子类生出的子类n n程序中只有在第程序中只有在第3 3句句(PhoneCard(PhoneCard类中类中) )定义定义 了了域域balancebalance但在第但在第4444,46(magCard46(magCard类中类中) ),第,第5757,59(IC-59(IC- CardCard类中类中) ),第,第7171,73(IP-Card73(IP-Card类中类中) ),第,第8686, 88(D200-Card88(D200-Card类中类中) )句中都使用了句中都使用了balancebalance域域它们自身并未定义它们自身并未定义balancebalance域,使用的域,使用的balancebalance 都是从父类都是从父类PhoneCardPhoneCard那里继承来的那里继承来的Java的继承15派生子类实现电话卡类的继承结构说明派生子类实现电话卡类的继承结构说明n nPhoneCardPhoneCard类在第类在第5 5句定义了一个句定义了一个抽象方法抽象方法 performDial( )performDial( )它的两个子类也是抽象类,可以不实现这个抽它的两个子类也是抽象类,可以不实现这个抽 象方法,分别派生出来

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

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号