上一篇文章【Java基础掌握封装进行实操】
下一篇文章【Java基础抽象类和接口】
安卓逆向交流学习:342647370
vx:yijin1108an
继 承
1.1 继承的概念和实现
1.继承的概念:继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
2.生活中的继承:
兔子和羊属于食草动物类,狮子和豹属于食肉动物类。
食草动物和食肉动物又属于动物类,所以继承需要符合的关系是:is-a,父类更通用,子类更具体。
虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。
3.继承的特点:
当从已存在类继承时,就重用了它的方法和字段,还可以添加新的方法和字段来定制新类以应对需求。
在Java种,除了Object类之外,所有类都是子类,都有唯一的父类,所以创建一个类时总是在继承。
继承背后的思想就是基于已存在的类来构建新类。
4.继承的优点:
(1)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
(2)继承提供了软件复用功能。
(3)增加了程序的易维护性。
(4)提供多重继承机制。
1.2 继承关键字
继承可以使用extends和implements这两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在java.lang包中,所以不需要import)祖先类。
1.implements关键字
使用implements关键字可以变相的使Java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
2.extends关键字
在Java种,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends只能继承一个类。
3.super关键字
super关键字特点:
(1)super和this关键字的特点类似,super代表的是父类对象的引用。
(2)当子父类的成员出现同名时,可以通过super来进行区分。
(3)子类的构造方法中,通过super关键字调用父类的构造方法。
案例:
1.3 方法重写
方法重写是指子类可以根据需要对从父类继承来的方法进行改写,是多态机制的前奏。
1.方法重写规则:
(1)重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值。
(2)重写方法不能使用比被重写方法更严格的访问权限。
(3)父类中的私有方法不能被重写。
(4)在子类重写的方法中继续调用父类被重写的方法可以通过调用super.函数名获取。
2.案例:
1.4 final关键字
由于继承中有一个方法重写的现象,而有时候我们不想让子类去重写父类的方法.面对这种情况Java给我们提供了这个关键字,它可以修饰类,变量,成员方法。
final可以用来修饰变量、方法、类。
final修饰的变量:是一个常量,一旦赋了值就不能再修改(常量一般都和static关键字配合使用)。
final修饰类:代表此类不能被继承。
final修饰方法:代表此方法不能被重写。
通过继承的学习,我们了解了继承的概念和实现,掌握了三个继承的关键字特点及使用以及一个被其修饰后不被继承的final关键字。同时,我们还掌握了方法重写(Override)的规则。
多 态
多态(Polymorphism)属于面向对象三大特征之一,是同一个行为具有多个不同表现形式或形态的能力。
它的前提是封装形成独立体,独立体之间存在继承关系,从而产生多态机制。
2.1 多态中向上转型和向下转型
1.向上转型:子类型转换为父类型,又被称为自动类型转换。
2.向下转型:父类型转换为子类型,又被称为强制类型转换。
3.在 Java 语言中有这样的一个规定:无论是向上转型还是向下转型,两种类型之间都必须要有继承关系,没有继承关系情况下进行向上转型或向下转型时,编译器都会报错。
例一:
例二:
例一中的代码没有报错?例二中的代码出现报错,原因是a本身就是Cat对象,所以自然可以向下转型为Cat,也理所当然不能转为Dog。a1为 Animal对象,所以它也不能被向下转型为任何子类对象。
注意
①向下转型的前提是父类对象指向的是子类对象(也就是说,在向下转型之前,它得先向上转型)。
②转型只能转型为本类对象。
4.Java中存在多态的三个必要前提条件:
(1)要有继承关系。
(2)要有方法重写。
(3)要有父类引用指向子类对象,也叫向上转型。
2.2 多态的好处和弊端
1.多态的好处:
(1)提高了代码的维护性(继承保证) 。
例如:在父类改一个属性不用每个子类都改属性。
(2)提高代码的扩展性(多态保证)。
例如:方法中使用父类为参数,来实现方法或者属性的调用。
2.多态的弊端:不能使用子类的特有属性和行为。
3.多态的注意事项:
(1)开发中创建对象的时候,用父类引用指向子类对象比较常用。
(2)当作参数时,使用多态最好,因为扩展性强。
通过对多态的学习,我们了解了什么是多态(polymorphic),同时在Java中,存在多态的前提条件为:继承、重写、父类的引用指向子类对象。
同时,我们还了解了多态的好处和弊端:
优点:可维护性高,扩展性高;
弊端:不能使用子类的特有属性和行为。