Java对于多重继承是怎么实现的

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对于多重继承是怎么实现的?

  1. 首先回答这个问题之前,我需要说明下什么是继承?什么是多重继承和单继承?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中有...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网