首页 理论教育 继承与多继承问题解析

继承与多继承问题解析

时间:2023-11-18 理论教育 版权反馈
【摘要】:子类通过继承自动拥有父类的非私有的属性和方法,即继承父类的特征和能力。但需注意的是,Java只需单继承,即一个子类只能有一个父类。final修饰的类不能被继承,表示最终类。Java中通过实现接口来达到多继承的功能。

继承与多继承问题解析

1.父类和子类

面向对象思想的第二大特征就是继承。继承就是实现类的重用、软件复用的重要手段。子类通过继承自动拥有父类的非私有的属性和方法,即继承父类的特征和能力。通俗来讲,“龙生龙、凤生凤、老鼠生儿会打洞”就是继承。子类不必重复书写父类中的属性和方法,而只需对父类已有的属性和方法进行修改或扩充,以满足子类更特殊的需求。

继承是通过extends关键字实现的,继承的基本语法:

通过继承子类自动拥有父类的允许访问的所有成员(public,protected,默认访问权限)。但需注意的是,Java只需单继承,即一个子类只能有一个父类。final修饰的类不能被继承,表示最终类。类的继承具有传递性。即A继承B,B继承C,则A也继承了C。C也是A的父类。下面是一个继承示例。

2.调用父类的构造方法

实例化子类对象时,会先调用父类的构造方法。调用格式为super(参数列表)。如果子类的构造方法没有显示调用父类的构造方法,则编译器会自动加上super()。此时若父类中没有无参数的构造方法,则编译器会报错。

用super语句调用父类的构造方法时,必须遵循以下语法规则。

(1)在子类的构造方法中,不能直接通过父类方法名调用父类的构造方法,而是要使用super语句。

(2)假如在子类的构造方法中super语句,它必须作为构造方法的第一条语句。

例如:

需要注意的是同一个构造方法中不能同时使用this()和super()。

3.访问父类的属性方法(www.xing528.com)

当super用于访问父类的属性方法时,使用的语法格式如下:

super.属性

super.方法()

例如,可以在子类中通过下面的方式来调用父类中的方法:

super.getname()

注意:父类的属性或方法必须是那些protected(受保护)或者public(公共)等可以让子类访问的属性方法。

4.多重次继承

在Java中多重次继承指的是一个类可以继承另外一个类,而另外一个类又可以继承其他的类,比如A类继承B类,B类又继承C类,这就是Java中的多重次继承。

需要注意的是,Java中有多重次继承,但却没有多继承的概念,一个类有且仅有一个父类,这是Java单继承的局限性。Java中通过实现接口来达到多继承的功能。一个类只能继承一个类,但是却可以实现多个接口。常常使用继承单个类和集成多个接口的方式实现类的多重次继承。以下是多重次继承的示例。

前面说到子类只能继承一个父类,也就是说单一继承,但是在Java中可以实现多个接口,曲折地实现多重次继承。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈