从零开始学Java 第9章 继承和多态

第9章  继承和多态
继承和多态是Java面向对象语言设计中的两个重要的特点。所谓继承,就是在现有类的基础上来构建新类以满足新的要求。本章就主要介绍Java中的继承和多态。
9.1  派生类
在继承的过程中,新的类继承原来类的方法和实例变量,并且能够添加自己的方法和实例变量,这就是继承。子类回去继承父类中的一些方法和属性,这就相当于显示生活中的父子关系一样。所以将这种机制称之为继承,而且其中的子类也被称作为派生类。
9.1.1  继承概述
继承时面向对象的基本机制。利用集成可以先创建一个公共类,这个类具有多个项目的共同属性,然后一些具体的类继承该类,同时会加上自己特有的属性。
父类又称为超类或者是基类,子类又称为派生类。在Java中,如果A类是从另一个类B中所派生出来的,那么就称A为派生类,B为超类。而A类又可以称为父类,B类又可以称为子类。A类中可以继承B类中的所有成员变量和方法,同时也可以扩展自己的方法和成员变量。
9.1.2  实现继承
一个类继承了另一个类,之所以能够调用父类的成员,是由于Java编译器会自动为子类来添加一个引用名为super的父类成员对象。创建子类对象的过程就是从最顶层的基类开始往上,一层层的来调用构造方法。
9.1.3  继承关系
继承支持层次抽象的概念,例如,红富士是苹果的一个品种,而苹果又是水果的一种,水果又是食物的一种。这样就产生了层次机构的概念,如果不使用层次结构的话,就需要定义每一个事物的属性以及行为。使用继承,就可以只在需要它的类中定义使自己成为唯一的属性,然后从父类那里继承通用的属性和行为。
9.2  多态
多态是面向对象编程中比较关键的一个概念。在现实生活中多态的思想随处可见,例如驾驶。“驾驶”代表了所有的交通工具的基本操作。但是针对与不同的交通工具,还有不同的实现方式,例如驾驶汽车、驾驶飞机等。本节就主要介绍多态的基本内容。
9.2.1  多态概述
在面向对象程序设计中,多态的概念会经常被描述成“一个接口,多种方式”。一个程序中可以出现同名但方法不同的情况。这主要就是通过继承的方式来实现的,一个新的类去继承另一个类的时候,这个新类就需要重写父类中的方法。这样一来,不同类的对象就可以调用相同名的方法来完成相关的操作。但他们的具体实现却是不一样的。
9.2.2  方法的重载
重载是在同一个类中的两个或者是更过的方法可以共享使用一个相同的名称,不同的是它们的参数。只要参数不同,方法名相同时没有问题的。也就相当于在一个班级中有两个相同姓名的学生,名字虽然相同,但是长相是绝对不同的。
9.2.3  方法的重写
前面介绍了方法的重载,是Java中提供的一种比较重要的功能。本节中就主要介绍一下方法的重写。重载和重写非常的相似。它在Java的继承中也有非常重要的应用。
一个类可以通过继承来产生一个新类,新的类继承了父类所有的成员变量和方法,并且在继承这些方法和变量的同时也具有了自己特有的行为,如果父类中的某一些方法不能够满足新的要求,就可以在子类中去修改从父类中所继承过来的方法,并可以同时定义自己的方法。
9.3  抽象类
抽象类是指具有共同特点的类进行抽象后所得到的一个类,这个类本身的方法没有任何的具体实现,而是为其子类去提供一个规范。在子类中必须要实现所规范的方法。
9.3.1  抽象类的定义
抽象类一般使用abstract关键字来进行修饰,它要比一般的类更具有抽象化。例如一个橘子类,它就具有所有的水果类所通用的方法,因为这个类没有具体的实现,所以它不可以去创建一个通用的、抽象的对象。
9.3.2  抽象类的使用
讲一个类设计成为抽象类之后,就可以为其添加没有具体实现的方法,也就是抽象方法。这种方法在定义的时候也要加上abstract关键字,而且没有方法的具体实现。
9.4  小结
这一节主要讲解了Java的继承机制。面向对象的三个基本特征是封装、继承和多态。首先讲解了Java的继承的实现,然后讲解了方法的覆写,读者要注意跟方法重载的区别。然后讲解了多态和动态绑定以及final关键字的使用。在第二节中主要是讲解了抽象类的使用。在第三节中则主要讲解Object类,首先是Object对象的使用,然后是Object两个重要的方法,主要讲解了如何覆写这两个方法,其中equals方法借鉴了String类中equals方法的实现。在下一章中,将会讲解另两种Java的重要机制,接口和内部类。请读者做好准备。

原文地址:https://www.cnblogs.com/yoogoo/p/2467266.html