java的多继承问题

bbgzk 2011-01-29 02:42:59
public class A{
public void methodA(){
System.out.println("这是a的方法");
}
}

public class B{
public void methodB(){
System.out.println("这是b的方法");
}
}

现在有个类C,想同时继承A的methodA()和B的method(),该如何利用接口来实现多继承

ps:就是想在C中不写方法methodA()和方法methodB()就可以使用这两个方法。
...全文
59 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fccfcc1234 2011-02-07
  • 打赏
  • 举报
回复
当然LZ可以使用内部类来完成多继承。举个例子:
class A{
public void print(){
System.out.println("A");
}
}

class B{

public void print()
{
System.out.println("B");
}
}

class C extends A
{
class PB extends B
{
public B getB()
{
return this;
}
}

public void PrintB()
{
PB b = new PB();

b.getB().print();
}
}
zzt369880281 2011-01-29
  • 打赏
  • 举报
回复
LZ能说一个实际应用中能用的此技术的例子吗?
barryhappy 2011-01-29
  • 打赏
  • 举报
回复
用 接口
bbgzk 2011-01-29
  • 打赏
  • 举报
回复

public interface A
{
public void method1();
}

public interface B
{
public void method2();
}

public class A1 implements A
{
public void method1()
{
...
}
}

public class B1 implements B
{
public void method2()
{
...
}
}


public class NewClass implements A,B
{
private A a = new A1();
private B b = new B1();

public void method1()
{
a.method1();
}

public void method2()
{
b.method2();
}
}

二楼和四楼的意思是上面这种方法吧,但是这种方法其实根本用不着接口的,可以用
class   a 
class b

class c{
private a a1;
private b b1;
}
fccfcc1234 2011-01-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bbgzk 的回复:]

引用 2 楼 theoffspring 的回复:

不能直接多继承,你可以写个包装器类,内部把methoda和methodb方法委托给a,b两个实例去做。


那所谓的“引进接口是为了弥补java不支持多继承带来的不足”作何解,我就是想知道如何利用接口来实现多继承,按照你的方法没用到接口啊
[/Quote]

我理解的“弥补不能多继承带来的不足”指的是OO设计的时候。并不是实现的时候。
zn85600301 2011-01-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bbgzk 的回复:]

引用 4 楼 zn85600301 的回复:

引用 3 楼 bbgzk 的回复:

引用 2 楼 theoffspring 的回复:

不能直接多继承,你可以写个包装器类,内部把methoda和methodb方法委托给a,b两个实例去做。


那所谓的“引进接口是为了弥补java不支持多继承带来的不足”作何解,我就是想知道如何利用接口来实现多继承,按照你的方法没用到接口啊
……
[/Quote]
你可能没明白 你的A B 两个类其实已经是作废的了
C类已经把A,B2个类合并了 等于还是只写了一遍
你要是不想写 都改成静态方法就行了
bbgzk 2011-01-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zn85600301 的回复:]

引用 3 楼 bbgzk 的回复:

引用 2 楼 theoffspring 的回复:

不能直接多继承,你可以写个包装器类,内部把methoda和methodb方法委托给a,b两个实例去做。


那所谓的“引进接口是为了弥补java不支持多继承带来的不足”作何解,我就是想知道如何利用接口来实现多继承,按照你的方法没用到接口啊

分别定义2个接口 IA IB
class A……
[/Quote]

这样就必须在C类中写出methodA()和methodB()的方法体,相当于把这两方法重新写一遍,我就是不想再一次写这两个方法
zn85600301 2011-01-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bbgzk 的回复:]

引用 2 楼 theoffspring 的回复:

不能直接多继承,你可以写个包装器类,内部把methoda和methodb方法委托给a,b两个实例去做。


那所谓的“引进接口是为了弥补java不支持多继承带来的不足”作何解,我就是想知道如何利用接口来实现多继承,按照你的方法没用到接口啊
[/Quote]
分别定义2个接口 IA IB
class A implement IA
class B implement IB
class C implement IA,IB
bbgzk 2011-01-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 theoffspring 的回复:]

不能直接多继承,你可以写个包装器类,内部把methoda和methodb方法委托给a,b两个实例去做。
[/Quote]

那所谓的“引进接口是为了弥补java不支持多继承带来的不足”作何解,我就是想知道如何利用接口来实现多继承,按照你的方法没用到接口啊
theoffspring 2011-01-29
  • 打赏
  • 举报
回复
不能直接多继承,你可以写个包装器类,内部把methoda和methodb方法委托给a,b两个实例去做。
fccfcc1234 2011-01-29
  • 打赏
  • 举报
回复
可以吗?
好像不行吧。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧