Java中的抽象类和接口

1.声明方法的存在而不去实现它的类叫做抽象类.它主要用于创建一个体现某些基本行为的类.

2.接口是抽象类的变异.在接口中所有方法都是抽象的,没有程序体.接口只可以定义static final变量.

---------------------------------------------------------------------------------------

对于抽象类与接口的区别,单纯从概念上很难有明确的答案,我们可以通过"报警门"的例子,来注意二者的区别.

不同的门都具有某些基本行为,比如open(),close().使用抽象类和接口都可以定义者两个行为.但是如果要增加报警alarm()的特性,应该改怎么办呢?

是使用抽象类还是使用接口?

若open,close,alarm都在抽象类中实现,则有些不妥,因为并不是所有的门都具有报警功能.

若opne,close,alarm都在接口中实现,则具有报警功能的门也必须实现open和close.相当于在每个门的实现类中都要实现open和close

如果采用以下方案是不是会更好呢?

把基本行为open和close在抽象类中实现,把alarm行为(或者成为个性化行为)在接口中实现.则一个完美的方案就出来了.

abstract class Door { 
  abstract void open(); 
  abstract void close(); 
} 
interface Alarm{
  void alarm();
}
class AlarmDoor extends Door implents Alarm{
  void open(){....};
  void close(){....};
  void alarm(){....};
}

---------------------------------------------------------------------------------------

抽象类,"is a"关系,抽象出共同的基本行为;接口,"like a"关系,个性化行为,可实现多重继承。

抽象类就是类的基本行为,共同的;接口是个性化的,若想让类更具个性化,则继承相应个性话的接口即可。

原文出处:http://android.blog.51cto.com/268543/385282/

posted on 2012-12-10 19:41  Fat T  阅读(419)  评论(0编辑  收藏  举报

导航