十二、Java从头开始-多重继承的麻烦-使用接口

两个父类-多重继承带来了问题

 

先举个列子引申,写一个孩子类,即继承了母亲类水灵灵的眼睛,又继承了父亲类乌黑的头发,这段程序如果用继承的方法要怎么写:写一个Father类实现头发黑的方法,写一个Mother类实现眼睛大的方法,然后写一个Child类同时继承父亲和母亲:public class Child extends Father,Mother  然后调用父类方法super.hair()super.eye();

这里有个知识点:当我们需要调用父类的方法时使用super关键字来表示调用其父类方法;

可能大家会发现在编写上面的程序时编译器已经提示错误,这样的多继承方式在Java中是不支持的,下面这个例子就能充分表现其不合理性,父亲和母亲现在离婚了,父亲和母亲同时拥有一个方法come(),孩子必须调用一个父类的come()来跟一个父母走,这时当调用super.come()时,模糊性的情况出现了,Java虚拟机搞不清到底是调用了父亲的come(),还是母亲的come(),因此Java基于简单化的原则不予许出现这种多重继承,那么问题还是没有解决,孩子必须和其中一个走,这时候接口为我们解决了多重继承的问题,它解决问题的方法很简单:把全部方法设为抽象的,这样一来子类就必须实现父类的方法,因此Java虚拟机在执行期间就不会搞不清调用了哪一个继承版本咯。所以,Java只允许一个子类继承一个父类但可以实现多个父接口。

接口的定义:public interface Father { …… }        
          public interface Mother { …… }
接口的实现:public child implements Father, Mother { …….}

 

你可能感兴趣的:(java)