继承和接口的用处

注:文章内容由网络及相关书籍整理而来,如此只为共享知识,给予帮助。

重写是Java中多态的一种表现,举例说明:

public class Father{
   public void hitChild(){    
   System.out.println("又不听话,看我怎么收拾你。");  
   }
}
public class F1 extends Father{
   public void hitChild(){
      System.out.println("打一拳。");
   }
}
public class F2 extends Father{
   public void hitChild(){
      System.out.println("踢一脚。");
   }
}
public class F3 extends Father{
   public void hitChild(){
      System.out.println("扇一个嘴巴。");
   }
}
public class Test{
   public static void main(String args[]){
      Father father;
      father=new Father();     
      father.hitChild();
      father = new F1();
      father.hitChild();
      father = new F2();
      father.hitChild();
      father = new F3();
      father.hitChild();
   }
}

运行结果:

C:\java>java Test
又不听话,看我怎么收拾你。
打一拳。
踢一脚。
扇一个嘴巴。

     Java中没有多继承,即一个类不能同时继承多个类。但一个类可以同时实现多个接口,如下:
public class F implements Father1,Father2,Father3{ }

     接口有利于代码功能的扩展(增加新的功能)。而继承则有利于代码功能的修改(把旧的功能改成新的功能)。这里旧功能的修改和新功能的增加前提是保留旧类源码,旧的功能仍然可以使用。

接着上面的继承举例:上面例子中的子类我们统称为一代子类

一. 用继承修改旧的功能

     现在如果一代子类F1的功能——“打孩子”,也就是方法hitChild()里边的功能实现有问题,我们要把具体实现修改掉,那么我们可以重新写一个新的二代子类F11继承自一代子类F1,并重写其hitChild()方法。

//二代子类
public class Son11 extends Son1{
   //重写父类“打孩子”方法
   public void hitChild(){
      System.out.println("我是二代子类对此方法的新实现");
   }
}

二. 用接口实现增加新的功能

     类F1已经有了“打孩子”功能,而我们有了新的需求,要给它增加一个新功能“宠孩子”(新方法pet()),而旧的代码不能动。那么我们可以定义一个新的接口(PetInterFace),接口里定义这个方法pet()的声明。再重新写一个二代子类F11,让它先继承类F1,同时实现接口 PetInterFace,并实现接口里的 pet()方法。
//新接口
public interface PetInterFace{
   //新方法
   public void petChild();
}
//二代子类
public class F11 extends F1 implements PetInterFace{
   //实现接口方法
   public void petChild(){
      System.out.println("父亲很爱我!");
   }
}
     这样这个二代子类F11即有了老的功能hitChild(),又有了新的功能petChild()。

posted on 2008-05-11 00:14  大崩  阅读(510)  评论(0编辑  收藏  举报