继承和多态
来源:互联网 发布:软件操作手册 编辑:程序博客网 时间:2024/06/05 18:13
在面向对象编程里,除了封装,还有两个重要的概念需要去掌握,那就是继承和多态。
一、继承概述
继承就是说在应用程序的类之间存在一种继承关系,这种关系能使一个类继承或扩展另一个类的功能。
在C++中,是多继承,一个类能从多个类继承功能。但是在Java里,只有单继承,一个新类只能从单个类继承功能。单继承使得管理代码更容易些,因为如果你在类之间创建了继承关系,一旦发现bug,那么这个bug要么在你当前类中,要么就在你所继承的类中。
有很多种方式描述继承关系,其实只是换个字眼而已。有的开发者将这种关系当作是父子关系,父类拥有功能,子类继承;又有人将其描述为基类和派生类,基类拥有功能,派生类继承扩展功能。在Java中,我们使用超类和子类的说法,超类拥有功能,子类继承功能。
Java中每个子类只能拥有一个超类,实际上即使你并没有使用关键字显示继承一个类,所有的类都继承一个超类,即首字母大写的Object类,Object类位于Java继承树形结构的顶端。
二、多态
多态就是在超类和子类已经存在继承关系的情况下,你可以将一个从子类实例化过来的对象当作本地子类类型看待,而且也可以将该类型当作超类类型看待。
我们看一段代码3-1:
public class A{ public void talk() { System.out.println(“早上好!”); }}public class B extends A{}public class Main{ public static void main(String[] args) { A a = new B(); a.talk(); }}
分析代码3-1:A a = new B();我们通过子类B的构造函数生成实例对象,但是我们使用的却是超类类型A,这时子类对象就被当作是超类对象,而且我们可以像使用超类对象一样,使用超类的方法了,比如:我们可以调用超类的方法talk()。当有了继承关系,我们设计代码的灵活性就大大提高了。
三、一个简单的继承关系
我们看看什么样的类可以存在继承关系。
1、设计定义一个橄榄油的类Olive;
2、由于世界上有许多类型的橄榄油,所以我们可以将类Olive设计为超类,这个超类拥有大多数橄榄油通用的属性和方法功能。
3、将许多其他特定类型的橄榄油设计为子类,让各个子类从超类中继承属性和功能。
4、绘制UML图或者简易的图表示继承关系。
超类Olive 子类Kalamata 子类Ligurian more---
Olive是超类,Kalamata和Ligurian都是Olive的子类。我们之所以叫单继承,就是因为每个子类只能有一个超类,但是一个超类却能有多个子类。
待续—-
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 继承和多态
- 游标与事务结合使用,在游标内启用事务;判断数据类型不符合时执行下一条
- 解决虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
- hdu 1588 Gauss Fibonacci(矩阵乘法)
- UITableView的封装和类的交互2
- 去哪网实习总结:怎样配置数据库连接(JavaWeb)
- 继承和多态
- GYM 100285 E. The Emperor’s plan(组合数学+dp)
- 黑马程序员----泛型(Generic)
- hdoj1950Bridging signals(最长上升子序列)
- 《數據結構與算法分析:C語言描述》習題2.13c代碼及自己的想法
- 项视图类的自定义委托之文字省略
- 关于Android长按出现复制粘贴栏在顶部占位问题解决方法
- SSH页面懒加载异常处理方法
- BestCoder Round #51 (div.2) 1001 Zball in Tina Town