java中什么是多继承_Java中实现多继承

众所周知,Java中是没有多继承的,只有多实现.但是,有时候我们确实需要继承多个类,这是个比较现实的问题,但是,标准的语法限制了我们,虽然可以通过多重继承来达到这样的效果,但是,看上去依旧那么不优雅,所以这边我想到一个办法,即通过内部类的方式进行多继承.

我们就以一个比较浅显的例子来说明问题,人类的造人.我们都知道,子女的很大部分都是由父母继承而来,所以需要多继承,通常情况下,我们通常会这么写:

先是父母类接口:public interface MotherIF {

public int getKind();

}public interface FatherIF{

public int getStrong();

}

然后,我们来写父母类的具体实现:public class Mother implements MotherIF{

@Override

public int getKind() {

return 8;

}

}public class Father implements FatherIF{

@Override

public int getStrong(){

return 8;

}

}

然后我们可以知道,父亲的强壮指数是8,母亲的善良指数是8,所以门当户对啊,于是他们的小孩也应该更加优秀.所以儿子应该继承了父亲的强壮和母亲的温柔.于是,我们需要儿子继承父亲和母亲,传统的方法是使用多层继承,即有一个类,先继承了母亲.再继承父亲,最后得到儿子,但是这样做,十分丑陋,而且对上层函数的重写也看上去不是那么清晰.于是这边我们采用的是使用内部类的方法.

public class Son extends Father implements MotherIF{

@Override

public int getKind() {

return new myMother().getKind();

}

@Override

public int getStrong(){

return super.getStrong() + 1;//比父亲更加强壮

}

private class myMother extends Mother{

public int getKind() {

return super.getKind() - 1;//没有母亲那么善良

}

}

}

这一段代码中,我们创建了一个myMother类,来继承母亲类,获取了母亲类的行为方法这是内部类的一个重要的特征.内部类可以通过继承一个与外部类无关的类来保证内部类的独立性,真是因为这一点,多层继承才可以完成.除了这边介绍的成员内部类之外,这里还介绍另外一种方式,匿名内部类.我们来看女儿的代码:

public class Daughter extends Mother implements FatherIF{

@Override

public int getStrong() {

return new Father(){

@Override

public int getStrong(){

return super.getStrong() - 2;

}

}.getStrong();

}

public int getKind(){

return super.getKind() + 1;

}

}

这边我们可以看到,女儿继承了母亲的善良,也继承了,父亲的强壮.这边的腹泻方法,是创建了一个匿名内部类,来完成继承父亲行为的功能.

再比如,我们常说的四不像,我们可以在四不像中定义鹿马牛驴这四个内部类,然后如法炮制即可.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值