黑马程序员-抽象类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 从规范的角度来看
接口是比抽象类还要抽象的类,其完全抽象。因此可以更加规范的约束子类,从而做到了规范 与 具体实现的分离。
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 从规范的角度来看
接口是比抽象类还要抽象的类,其完全抽象。因此可以更加规范的约束子类,从而做到了规范 与 具体实现的分离。
相关文章推荐
- abstract class 和 interface 有什么区别?(抽象类和接口的区别)
- 详细解析Java中抽象类和接口的区别 abstract class和interface
- java中abstract class 与 interface (抽象类与接口)的区别
- Java中抽象类(Abstract Class)与接口(Interface)的区别?
- 详细解析Java中抽象类和接口的区别 abstract class和interface
- abstract class和interface的区别(抽象类和接口的区别)(转)
- Java中接口(interface)与抽象类(abstract class)的区别
- Java 深入学习(3) —— 抽象类(Abstract Class) 与 接口(Interface)的区别
- 4.2.8 抽象类(abstract class)与接口(interface)有什么异同【Part3:区别】
- 面试题之——抽象类(abstract class)与接口(interface)的区别
- Java中interface接口与abstract class抽象类的区别
- 小论接口(interface)和抽象类(abstract class)的区别
- Java 接口(interface)和抽象类(abstract class)区别
- interface 与abstract class(接口 与 抽象类)的特点以及区别,以及应用场景
- 详细解析Java中抽象类和接口的区别 abstract class和interface(转)
- 接口(interface) 与 抽象类(abstract class) 的区别
- (2.1.15)抽象类abstract class和接口interface的区别
- 接口(interface)和抽象类(abstract class)的区别
- 抽象类(abstract class)和接口(interface)有什么区别
- 详细解析Java中抽象类和接口的区别 abstract class和interface