3> interface的应用场合

  A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。

  B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。

  C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。

  D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。
  4> abstract class的应用场合

  一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,可以使用它。常见的有:

  A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。

  B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。

  C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能

  22、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

  接口可以继承接口。抽象类可以实现(implements)接口。抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

  23、构造器Constructor是否可被override?

  构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

  24、.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

  不能,一个对象的一个synchronized方法只能由一个线程访问。

  25、编程题:写一个Singleton出来。

public class Singleton {  
 
private Singleton(){}  
 
//在自己内部定义自己一个实例,是不是很奇怪?  
 
//注意这是private 只供内部调用  
 
private static Singleton instance = new Singleton();  
 
//这里提供了一个供外部访问本class的静态方法,可以直接访问  
 
public static Singleton getInstance() {  
 
return instance;   
 
 }  
 
}
   第二种形式:

public class Singleton {  
 
private static Singleton instance = null;  
 
public static synchronized Singleton getInstance() {  
 
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
 
//使用时生成实例,提高了效率!  
 
if (instance==null)  
 
instance=new Singleton();  
 
return instance; }  
 
}