您的位置:首页 > 职场人生

黑马程序员-抽象类abstract class 与 接口interface 的区别

2014-12-25 13:55 471 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

l 从特性来看
1. 抽象类:含有抽象方法的类只能定义成抽象类。

抽象类不能被实例化,也即不能使用new关键字来实例化抽象类。

2. 接口:是一个完全抽象了的类,没有任何东西可以被子类来继承了。

 

l 从实现子类的角度来看
1. 子类与抽象类的关系,可以类比为”父子”关系,一个儿子只能有一个父亲。即一个子类只能继承一个抽象类。这是java所特有的,因为多继承会造成复杂性。

2. 子类与接口的关系。可以类比为”师徒”关系,一个徒弟可以有多个师傅。即一个子类可以实现多个接口。类之所以可以实现多个接口,是因为接口只有抽象成员,所以复杂度大大的低于抽象类,不会造成复杂性。

3. 一个子类可以继承一个抽象类,同时实现多个接口。

 

l 从抽象类及接口的成员来看
抽象类:

1. 抽象方法没有方法体。格式:public abstract methodName();。

2. 同时包含普通成员变量(没有抽象变量这一说),普通方法,抽象方法(抽象方法定义为:abstract methodName() )。子类必须实现所继承抽象类的抽象方法。

 

接口:接口类的成员中有且只有抽象方法,

1. 接口中只有两个内容:

常量:默认修饰为 public static fianl。

方法:默认修饰为 public abstract。格式为:public abstract methodName()

2. 接口中无论是常量还是方法,都是public的,因为本身自己不能被实例化,只有公开成员,才能实现自己的意义。

 

l 从规范的角度来看
接口是比抽象类还要抽象的类,其完全抽象。因此可以更加规范的约束子类,从而做到了规范 与 具体实现的分离。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 抽象类 接口