一、为什么要使用抽象类?有什么好处?
抽象类是通用接口。不同的子类可以用不同的方法表示此接口。通用接口建立起一种基本形式,以此表示所有子类的共同部分。
必须覆写父类abstract抽象的方法
含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法
如果子类是抽象类,可以不用覆写
抽象类是通用接口。不同的子类可以用不同的方法表示此接口。通用接口建立起一种基本形式,以此表示所有子类的共同部分。
必须覆写父类abstract抽象的方法
含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法
如果子类是抽象类,可以不用覆写
二、为什么要使用通用接口?
接口和内部类为我们提供了一种将接口与具体实现 分离的 更加结构化的方法。
可以确定方法方法名、参数和返回类型,但是没有任何具体实现。
三、比较抽象类与接口
抽象类 | 接口 | |
关键字 | abstract | interface |
目的区别 | 可以重用你代码使你的代码更加简洁 | 一个类间的协议,它并没有规定怎么去实现 |
行为 | 只能单继承 | 可以多继承,multi-implement |
是否可以有构造? | 可以有构造方法,但是不能执行? | |
属性 | 没有要求 | 必须是常量(即public static final;且不能使空白final) |
方法 | 可以包含抽象方法,也可以包含非抽象方法 | 每个方法只是声明不包括方法体 |
访问权限 | 都可以 | 必须public级别 |
是否可以实例 | 不行 | 不行 |
是否可以声明abstract | YES | NO,默认都是abstract |
四、参考资料
《澄清Java语言接口与继承的本质》
http://hi.baidu.com/%B3%C2%C0%CB%CF%C9/blog/item/f8caaec3c2253255b219a875.html
“抽象就是抽去像的部分”
《我对面向对象设计的理解——Java接口和Java抽象类》
http://hi.baidu.com/%B3%C2%C0%CB%CF%C9/blog/item/6fa5242dc0101034359bf752.html
《Java抽象类和接口的区别(好长时间没看这种文章了) 》
http://
www.blogjava.net/chunkyo/archive/2007/01/21/95093.html
www.blogjava.net/chunkyo/archive/2007/01/21/95093.html