在内部类的基础上,我们来看看今天的知识点儿。
众所周知,java类之间只可单继承,不可多继承,也就是一个类只能继承一个类,不可以继承多个类,那我们如果想“反其道而行之”呢?这不是危言耸听,因为我们确实有些情况下需要继承多个类,比如希望拥有两个类的行为功能,就很难使用单继承来解决问题了(当然,使用多个接口实现也是可以解决的)。
那,可不可以不利用接口的情况下实现多继承呢?当然是可以的,那就是——内部类!
下面我们来分析个例子:
假如有一个吃饭的类(Eat)和玩耍的类(Play),吃饭的类里面实现的是吃饭功能,而玩耍的类里面自然实现的是玩耍的功能。
现在新加了一个People类(人),该类想实现吃饭和玩耍的功能,如果使用继承的话,我们只能实现其中的某一功能,吃饭亦或玩耍,这满足不了我们的需求。
下面我们来举个例子,使用内部类,让java的多继承成为现实。
Eat类:
//吃饭的类 public class Eat { public void info (){ System.out.println("正在吃饭"); } }
Play类:
//玩耍的类 public class Play { public void info(){ System.out.println("正在玩耍"); } }
People类:
public class People { //创建吃的 内部类 public class EatIng extends Eat{ } //创建玩的内部类 public class PlayIng extends Play{ } //实例化两个内部类的对象 EatIng eatIng = new EatIng(); PlayIng playIng = new PlayIng(); //人正在吃饭 public void peopleEat(){ eatIng.info(); } //人在玩耍 public void peoplePlay(){ playIng.info(); } //main方法主体 public static void main(String[] args) { People people = new People(); people.peopleEat(); people.peoplePlay(); } }
其运行结果为:
代码分析:首先我们创建了Eat类和Play类,两类里面都有一个方法,吃饭和玩耍。然后就是People类,该类中,我们分别创建两个内部类,吃和玩。然后就是实例化两个内部类的对象,最后通过这两个对象即可实现我们想要实现的方法,你看看是不是就间接的实现了多继承了呢。这样虽说有点儿麻烦,不过需求还是达到了!