请问组合与继承的区别.什么场合用组合,什么场合用继承

解决方案 »

  1.   

    组合就是在一个类里头申明另外一个类的对象,然后可以通过对象使用这个类的函数
    继承就是在申明类的时候使用extends关键字,然后该类就自动集成了父类的所有函数,可以复写父类的函数,也可以申明新的函数
    要决定一个是应该继承另一个类,还是使用另一个类,基本原则是看该类是否有向上转型的必要。如无必要,则优先使用组合
      

  2.   

    组合:import com.aa;
    import com.bb; public class ccc{
    ...........
     aa.com1=new aa();
     bb com2=new bb();
    //生成它们的实例 public String getChange(float f1,float f2){
    ..............
     com1.sendMess();
     com2.sendMess();
     com2.receiveMess();//在 bb的业务方法中调用 aa与bb中的业务方法
    }
    .......
      

  3.   

    继承:
    package InherienceTest.BaseClass;//package 后可以被继承,但是不能执行
      public class BaseClass
      {
      public BaseClass(){
      System.out.println("I'm the Constructor Function in BaseClass!");
      }
      protected static void FuncTest(){
      System.out.println("This is a Function Test in BaseClass!");//Static Methord
      }
      public static void main(String[] args){
      FuncTest();
      System.out.println("This is the BaseClass!");
      System.out.println(new java.util.Date());
      
      }
      };
      
      import InherienceTest.BaseClass.BaseClass;//相当于路径:path & InherienceTest\BaseClass\BaseClass.class
      
      public class InherienceTest extends BaseClass//注意:public主类名必须和文件名相同
      { //基类不能和派生类在同一目录下面。
      public static void main(String[] args)  //main函数必须是pulic static 
      {
      InherienceTest xx=new InherienceTest();//构造函数被执行
      xx.FuncTest();             //调用继承的方法
      System.out.println("Hello World!");
      }
      }