5、类的继承
5.1定义

前面说过,类是一系列拥有相同属性和方法的对象的抽象描述。那么如果两个类之间也存在着一些相同的属性和方法,它们应该怎样处理呢?

例如:一个学生类,它的属性有姓名、学号、学校等等,方法有学习;而一个大学生类它也应该拥有了学生类中的属性和方法,那么这个大学生类能否在不定义这些属性的情况下也调用它们呢?答案是可以的。

这就是继承。

继承:一个类(子类)继承另一个类(父类),能够让子类拥有父类的所有属性和方法。

关键字:extends 
格式:public  class 子类名  extends 父类名 {    }

代码示例:

java如何写一个class继承另外一个class java类怎么继承_父类


(student类定义在上一篇博客中)输出结果:

java如何写一个class继承另外一个class java类怎么继承_访问权限_02

5.2访问权限
前面说过,一个类继承了父类,那么它将继承父类的所有属性和方法,那么这些属性和方法是否一定能够正常调用呢?这可不一定哦。限于访问权限,部分的属性和方法虽然拥有,但是不能直接调用,否则会报错的。
权限表如下:

                                               当前类中               同一个包下的类中                 不同包下的类中                其他          

public(共有)                     YES                       YES                                               YES                             YES
protected(受保护的)       YES                        YES                                              YES
缺省(包权限)                    YES                        YES
private(私有的)                YES

5.3重写

虽然子类继承了父类的所有属性和方法,但是如果还是无法满足子类的要求,比如虽然大学生类继承了学生类中的“学习”这个方法,但是大学生的学习和其他学生的学习并不太一样,因此为了满足大学生的要求,这里就需要对大学生类中的“学习”这个方法进行重写,即子类重写父类的方法(但是需要注意的是:这个重写后的方法只适用于子类中)。

代码示例:

student类:

java如何写一个class继承另外一个class java类怎么继承_子类_03


重写study函数后的子类:

java如何写一个class继承另外一个class java类怎么继承_父类_04

子类的输出结果:

java如何写一个class继承另外一个class java类怎么继承_父类_05

重写后的函数能够正常地在子类中执行。
而父类(student类)的输出结果:

java如何写一个class继承另外一个class java类怎么继承_JAVA中类与对象_06

重写后的函数无法在父类中执行。

重写父类函数还有一点需要注意的是:由于是继承嘛,总该有点规矩来表示对父类的尊敬 0.0, 因此在重写方法时,对于方法的声明,除了访问权限可以扩大,其他(包括方法的返回值类型、方法名、参数)必须完全一样。

当然了还有一点前提条件是:两个类必须有继承的关系才能重写函数。
 

5.3自动转型
自动转型:子类的对象能够自动地转为父类的对象。

自动转型后,方法的调用以子类为准。

至此,类与对象的基本内容就差不多介绍了一下了,如果有发现什么错误,欢迎指出~