继承是软件开发中实现代码复用的有效手段,如果一个类A继承了类B那么类B中的public、protected及默认修饰符修饰的实例成员或静态成员将被类A继承,也可以说类B的成员就是类A的成员而类A在此基础上还可以扩展新的成员。
如果两个类(类A和类B)存在相同的成员则可以抽象出它们的父类(将两个类的相同成员放在父类)类C,从而实现代码的复用。
1 //类c 2 public abstract Animal{ 3 public static String Color;//静态成员 4 public String Name;//实例成员 5 public void Eat(string fool)//实现吃的方法 6 { 7 System.Out.Println("我在吃"+fool); 8 } 9 } 10 //类A 11 public Cat extends Animal{ 12 //类A继承类C 13 } 14 //类B 15 public Dog extends Animal{ 16 //类B继承类C 17 }
从上面的例子中类A和类B都继承了类C所以这两个类中都有Color和Name以及吃的方法。但是狗会咬人所以我们可以再类B中定义一个咬人的方法
1 public Dog extends Animal{ 2 //类A继承类C 3 public void EatPerson(){ 4 System.Out.Println("我会咬人") 5 } 6 }
如果有一个动物它不吃别的东西它只吃鱼那我们可以覆盖父类的Eat()方法
1 public Cate extends Animal{ 2 public void Eat(String fool) 3 { 4 if(fool.Equals("鱼")){ 5 System.Out.Println("我在吃鱼"); 6 }else{ 7 System.Out.Println("我只吃鱼!赶快拿走"); 8 9 } 10 } 11 }
使用继承的注意点:
继承时继承的级层最好不要超过三层因为继承的层级如果超过三层则会使程序变的复杂,不易于维护
在使用继承是不要滥用。不可以属性值来扩展子类。
继承的缺点:打破封装,是父类的内部实现完全暴露给子类。