Java对于多重继承是怎么实现的
继承是面向对象编程的一种特性,是保留原有类功能的前提下拓展或改写部分功能,实现代码复用的方式,
单继承就是一个类只可以继承自一个父类,多继承是指一个类可以同时继承多个父类
java中使用的是单继承,也就是一个类有且只能有一个父类,java中可以使用接口实现来实现类似多继承的效果
首先要有个表示People行为的接口:
public interface PeopleBehavior {
void sayName();
}
则有People类实现如下:
public class People implements PeopleBehavior {
private final String mName;
public People(final String name) {
mName = name;
}
@Override
public void sayName() {
System.out.println("People:" + "sayName:" + mName);
}
}
为了模拟C++的虚继承两边指向同一个虚基类对象,参考Decorator pattern的设计,关键在于要有一个People类的wrapper:
public class PeopleWrapper implements PeopleBehavior {
private final People mPeople;
public PeopleWrapper(final People people) {
mPeople = people;
}
@Override
public void sayName() {
mPeople.sayName();
}
}
表示Programmer行为的接口:
public interface ProgramBehavior {
void setLanguage(final String lanaguage);
void program();
}
则有Programmer类:
public class Programmer extends PeopleWrapper implements ProgramBehavior {
private String mLanguage;
public Programmer(final People people) {
super(people);
}
@Override
public void program() {
System.out.println("Programmer:" + "program:" + mLanguage);
}
@Override
public void setLanguage(final String lanaguage) {
mLanguage = lanaguage;
}
}
同理表示Manager行为的接口:
public interface ManagerBehavior {
void setStyle(final String style);
void manage();
}
Manager类:
public class Manager extends PeopleWrapper implements ManagerBehavior {
private String mStyle;
public Manager(final People people) {
super(people);
}
@Override
public void setStyle(final String style) {
mStyle = style;
}
@Override
public void manage() {
System.out.println("Manager:" + "manage:" + mStyle);
}
}
如此,不难得出ProgramManager类的设计:
public class ProgramManager extends PeopleWrapper implements ProgramBehavior,
ManagerBehavior {
private final ProgramBehavior mProgramAbility;
private final ManagerBehavior mManagerAbility;
public ProgramManager(final People people) {
super(people);
mProgramAbility = new Programmer(people);
mManagerAbility = new Manager(people);
}
@Override
public void setStyle(final String style) {
mManagerAbility.setStyle(style);
}
@Override
public void manage() {
mManagerAbility.manage();
}
@Override
public void setLanguage(final String lanaguage) {
mProgramAbility.setLanguage(lanaguage);
}
@Override
public void program() {
mProgramAbility.program();
}
}
Java对于多重继承是怎么实现的?
首先回答这个问题之前,我需要说明下什么是继承?什么是多重继承和单继承?java采用何种机制来实现多重继承:
1.1继承是面向对象编程的一种特性,是保留原有类功能的前提下拓展或改写部分功能,实现代码复用的方式.。
1.2单继承就是一个类只可以继承自一个父类,多继承是指一个类可以同时继承多个父类。
1.3java中使用的是单继承,也就是一个类有且只能有一个父类,java中可以使用接口实现来实现类似多继承的效果。
2.下面着重介绍Java中如何实现多继承:
如下是多重继承示例:
interface CanFight{
void fight();
}
interface CanSwim{
void swim();
}
interface CanFly{
void fly();
}
class ActionCharacter{
public void fight(){
System.out.println("I can fight!");
}
}
class Hero extends ActionCharacter implements CanFight,CanSwim,CanFly{
public void swim(){
System.out.println("I can swim!");
}
public void fly(){
System.out.println("I can fly!");
}
}
public class Adventure {
public static void t(CanFight x){x.fight();
}
public static void u(CanSwim x){x.swim();
}
public static void v(CanFly x){x.fly();
}
public static void w(ActionCharacter x){x.fight();
}
public static void main(String[] args){
Hero h=new Hero();
t(h);
u(h);
v(h);
w(h);
}
}
从这个实例中,不能看出Java对于多继承是如何实现的。
运行结果:
I can fight!
I can swim!
I can fly!
I can fight!
以上就是Java对于多继承是如何实现的说明
Java中为了保证数据安全,只能够单继承,也就是说一个类只能有一个父类。既然类无法多重继承,那么只能使用接口实现,因为一个类可以实现多个接口。只要根据需求,将相关方法放在不同的接口中,让子类去实现,也可以达到多重继承的效果。
下面是一个使用接口实现多重继承的例子:
interface Plant{
void grow();
}
interface Flower {
void bloom();
}
interface Apple {
void fruit();
}
class RedApple implements Plant,Flower,Apple{
public void grow(){
System.out.println("RedApple isgrowing.");
}
public void bloom(){
System.out.println("RedApple isblooming.");
}
public void fruit() {
System.out.println("RedApple isfruiting.");
}
}
3、 Java 中,能实现多重继承效果的方式是( ) A) 内部类 B) 适配器 C...
答:[解析] 本题考查Java中多重继承的概念。首先要区分选项中各个概念,内部类是在一个类小的内部嵌套定义的类,主要用来生成事件适配器。适配器定义一个包装类,包装有不兼容接口的对象。这个包装类指的就是适配器(Adapter),它包装的对象就是适配者(Adaptee),适配器提供客户类需要的接口。接口是―种只...
Java对于多重继承是怎么实现的
答:1.3java中使用的是单继承,也就是一个类有且只能有一个父类,java中可以使用接口实现来实现类似多继承的效果。2.下面着重介绍Java中如何实现多继承:如下是多重继承示例:interface CanFight{ void fight();}interface CanSwim{ void swim();}interface CanFly{ void fly();}class ActionCharacter{ ...
Java多继承和多实现 怎么回事?
答:1、java只能单继承 但是可以多实现!继承是指继承某个类,实现是指实现某个接口!Java不支持多继承,但是通过一些巧妙的设计来达到和多继承同样的效果 通过接口、内隐类,继承、实现,互相配合,达到多继承的效果 2、实现:通过interface关键字进行实现,但并不涉及到实现细节,不与任何存储空间有关连。...
多继承的Java
答:Java不支持类之间的多继承,即一个子类只能有一个父类。单继承性使得Java简单,易于管理程序, 不会出现逻辑错误以及多继承自身的缺陷。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口,从而在另一个更合理的角度来实现纯粹的多重继承性,实现接口使用关键字implements。继承使用关键字exten...
在JAVA中继承类有什么特点?可以多重继承吗?
答:Java的类是单继承的,不支持多继承,即extends关键字后只能有一个类名称,即直接父类。因此Java的类继承关系形成一个树型结构,而不是网状结构。要想实现类似于C++的多继承关系,Java是通过接口间接实现的,即多个父类实现某一接口,每个父接口有子接口,子类实现子接口。
java中接口实现多继承是怎么实现的?
答:在java当中,每个类(类java.lang.Object除外)有且仅有一个直接父类(下面有注释),不能直接继承多个父类,但是可以直接继承多个接口,接口之间用逗号隔开(注意继承接口时要实现接口中的方法)注释:类的定义格式如下 【类修饰词列表】 class 类名 【extends 父类名】 【implements 接口名称列表】{...
什么是继承,试说明在java中实现多继承的方法
答:继承的作用:是子类可以直接调用父类的方法,可以重写拓展父类的方法属性。方法的重写:子类和父类的方法相同(名字、参数列表和返回类型都相同、是否有static修饰也一样)子类的权限不能比父类的小,抛出异常不能比父类大。java中没有直接多继承。只能间接实现多继承。通过接口、抽象类实现多继承如:A...
java使用什么关键字实现继承?
答:Java不支持多重继承,即一个类不能同时继承多个父类。但是,Java通过接口实现了多重继承,并允许一个类实现多个接口。在实现接口时,需要使用`implement`关键字。继承是Java面向对象编程中的一个基本概念,它允许开发者复用现有的代码,同时也可以扩展类的功能,提高代码的重用性和可维护性。
java 间接实现对类的多重继承作用 怎么写程序啊(有package1,2,3的...
答:这些图的意思就是告诉你学习java的知识点。在java中是没有多重继承的,但有比这个功能好用接口,能过接口来实现多重继承的功能。java变相实现多重继承只能靠内部类,但这种方式也削弱了继承。图三是实现接口跟继承可以说是两码事,实现多个接口那也不叫多继承。
java中如何实现多重继承
答:如果是一个类继承多个类的话,java里是不行的,可以实现多个接口,打个比方,继承就象是亲爹,接口是干爹,亲爹只有一个,干爹可以有多个 如果是多层继承的话,就比如:class A{ } class B extends A{ } class C extends B{ } 类A B C就实现了多重继承,A中有的方法B中全部由,B中有...