本帖最后由 魏-玉-彪 于 2012-9-6 18:30 编辑
用学术的语言描述是这样:
抽象类:抽象就是不具体,没有方法体的方法称为抽象方法,有抽象方法的类称为抽象类,抽类中可以有具体方法,也就是正常的、有方法体的、有大花括号的方法。使用abstract关键字修饰
接口:可以认为是一种特殊的抽象类,接口中声明的所有方法都是抽象的,所有的变量都是 final类型的。使用interface关键字修饰一个接口,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
如果要换成自己的语言,可以这样回答:
首先,抽象类是一个类,用abstract class 定义,接口是一个接口用 interface 定义,
接口可以看成是一种特殊的类,抽象类中可以有非抽象方法,接口中声明的所有方法必须都是抽象的,所有的变量都是 final类型的 。
关于继承的特性,在java中,不支持类的多继承,就好比说,一个孩子只能有一个爹,抽象类是类的一种,因此不支持多继承,但支持多重继承。 接口支持多继承,也支持多实现,就好比是一个学生可以有多个老师,可以从事多种职业。
另外抽象类和接口都不能实例化,只能通过子类覆写了所有的抽象方法后才能实例化,就像是老父亲和老师的年龄大了,不能直接干活,只能让儿子或者学生干。{:soso__8961432591078930798_3:}
在定义的时候,能定义接口的就定义接口,这样可以少占用一个类的extends关键字,就好比说,能让学生干的活就让学生干,儿子只有一个,干了这个就干不了别的,学生可以有很多。{:soso__10513193490961459299_4:}
|