一,如何实现两个对象之间的互发消息?
通过对象引用的方法,当一个类在域变量中声明另一个对象时,两个对象便可以互发消息。如课本中例5.6

class FighterPlane
{
   String name;
   int missileNum;   
   public FighterPlane(String _name,int _missileNum){
	    name = _name;
		missileNum = _missileNum;
   }
   public void fire(){
       if (missileNum>0){
          System.out.println("now fire a missile !");
		  missileNum -= 1; 
       }
       else{
          System.out.println("No missile left !");
       }
   }   
}

class A 
{
    FighterPlane fp;
    public A(FighterPlane fpp){
       this.fp = fpp; //A对象中拥有了FighterPlane对象的引用
    }
    public void invoke(){
       //A中对象发送消息给FighterPlane的对象
       System.out.println(fp.name); 
    }
}
public class  Run{
   public static void main(String[] args)
   {  
      FighterPlane ftp = new FighterPlane("su35",10);
	//产生A对象,并将ftp对象引用作为参数传入
      A  a   = new A(ftp); 
      //发送消息,产生调用关系
      a.invoke();
   }
}

二、谈谈组合与继承的区别以及两者的使用场景。
组合通过对象内部的属性引用来实现。继承则是在生成子类对象的时候,将父类与子类的非静态属性复制到子类对象中*。

三、JAVA中的运行时多态的含义是什么?有什么作用?
多态是指一个程序中同名但不同方法共存的情况。方法同名表明它们的最终功能和目的相同,但由于在完成同一功能时可能遇到不同的具体情况,所以需要定义含不同具体内容的方法。
面对对象程序设计过程中,对于能进行消息处理的接口方法,有时既需要对其功能进行复用,同时又需要对其进行扩充,重载正好能满足这种要求,因为旧的接口方法得以保留以保障原先使用程序的稳定,同时又可增加带参数的新的重载方法以满足扩充需求,并且新增加的重载方法与原先旧方法之间存在功能复用关系;而方法覆盖与引用替换结合,可使抽象类的声明在保证消息发送统一性的前提下,具有消息结果执行上的相异性特点。

四,简述运算符instanceof的使用场景。
instanceof是JAVA中的二元运算符,左边为对象右边为类;当左边为右边的类或子类所创建的对象时则返回true,反之则返回false。使用场景:左边对象实例不能为基本数据类型(当有NULL时都返回false)