JavaOO 继承

本章目标:

理解继承的概念

掌握Java中继承的实现方式

理解方法的重写

理解最终类和最终方法

继承:

仔细观察,我们可以在几种员工身上发现一些共有的特征和行为,而它们中的大部分我们在 Employee中定义。而它们的不同仅是个别的地方。

在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承

含有共同属性的类称为父类(基类)

特有属性的类称为子类(派生类)

public class 子类名 extends 父类名 {  }

类与类的关系:

1、use a

2、has-a(组合)

3、is-a(继承)

继承的优点:

1、代码的可重用性

2、父类的属性和方法可用于子类

3、子类可扩展父类的属性和方法

4、设计应用程序变得更加简单

在Java中,一个类只能有一个父类

所有类的根类都是Object

public boolean equals(Object x);

public String toString();

来自于Object,

protected void finalize()throws Throwable;----与构造方法对立,构造方法是构造对象,它是销 

                                                                             毁对象

final    finally   -----关键字

finalize -------方法,属于Object的方法,由垃圾回收器调用

方法重写:

子类把从父类继承而来的方法,重新实现一次

子类方法访问修饰符必须大于等于父类访问修饰符

重写要求:

1、方法名、返回类型、参数列表必须要保持一致

2、访问修饰符重写后必须大于等于重写前

3、重写后方法抛出的异常不能比重写前多(多,不是指个数而是指范围)

Object中自带一个toString方法,该方法的作用是返回对象的字符串描述

Object作为父类,在实现过程中不知道子类的具体形态,所以只能简单的返回:全类名@16进制引用

书写子类的程序员可以按自己的方式重写该方法,返回自定义的字符串描述

Object自带一个equals方法,该方法的作用是判定两个对象在业务逻辑下是否相等

Object作为父类,在实现过程中不知道子类的具体业务逻辑,所以只能简单的返回引用是否相等

书写子类的程序员按自己的业务逻辑重写该方法,返回真假。(绝不是简单的所有属性都一样才返回true)

由于构造方法不能被继承,所以构造方法不能被重写

super关键字:

this();调用本类的其他构造 ---------没有默认

super();调用父类的指定构造-------有默认,默认调用父类的公共无参构造

语法:两个都只能写在本类构造方法的第一句

this. ----指当前对象 

可以看到本类的属性、行为,不受访问修饰符影响

可以看到来自父类的属性、行为,受访问修饰符限制

super. --指当前对象的父类对象部分

看不到本类的任何属性、行为

可以看到来自父类的属性、行为,受访问修饰符限制

结论:调用重写后的方法时,this.得到的是重写后子类的实现,super.得到的是重写后父类的实现,只有这种情况根据需求选用,其余时候尽量使用this.操作

final关键字:

如果final修饰了一个类,这个类就叫做最终类或终态类,不能被继承

如果final修饰了一个方法,这个方法就不能被重写

原文地址:https://www.cnblogs.com/wuhao-bky/p/6395115.html