* 定义类的改进 在提出继承后,我们类的定义就应该更加完善了: Class 类名{ class 类名{ class 类名{ class 类名{ 成员变量; 成员变量; 成员变量; 成员变量; 成员方法; 成员方法; 构造方法; —> --> --> 成员方法; --> } } } } Package 包名; package 包名{ Class 类名 extends 父类{ class 类名 extends 父类 implements 成员变量; 接口名 { 构造方法; --> 成员变量; 成员方法; 构造方法; 成员方法; } } * 实现接口 vs 继承类 Java的继承是单继承,也就是一个类最多只能有一个父类,这种单继承的机制可保证类的纯洁性,比C++中的多继承机制简洁。 但是不可否则,对子类功能的扩展有一定的影响,所以我们认为: (一) 实现接口可以看作是对继承的一种补充 还有一点,继承是层级式的,不太灵活。图示,这种结构修改某个类就会打破这种继承的平衡,而接口就没有这样的麻烦,应为它只针对实现接口的类才起作用。所以: (二) 实现接口可在不打破继承关系的前提下,对某个类功能扩展,非常灵活。 精典案例: package com.testh; public class TestCar { //售车收入 private int money=0; //卖出一部车 public void sellCar(Car car){ System.out.println("车型"+car.getName()+"单价:"+car.getPrice()); //增加卖出车售价的收入 money+=car.getPrice(); } //售车总收入 public int getMoney(){ return money; } public static void main (String []args){ TestCar testcar=new TestCar(); //售出一辆宝马 testcar.sellCar(new BMW()); //售出一辆QQ testcar.sellCar(new CheryQQ()); |