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

原创 2014年12月25日 13:55:05
------<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接口(interface)与抽象类(abstract class)的区别

很久没有看到如此精辟的文章了!作者写得实在太好了!正在学JAVA或者想了解抽象类与接口的朋友,绝对不可错过!本人极力推荐! OOP中接口与抽象类的区别 Java语言接口与继承的本质 深入理解接口...
  • zgrjkflmkyc
  • zgrjkflmkyc
  • 2013年09月30日 21:08
  • 5854

抽象类(abstract class)和接口(Interface)的区别

前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换,因...
  • aptentity
  • aptentity
  • 2017年04月01日 11:53
  • 1180

抽象类abstract和接口interface的区别与深入思考

在以前的编程过程中,经常对abstract和interface混淆,相信很多初学者都有这样的困惑,也问过很多经验丰富的程序员,他们也不能清楚地说出个所以然来。经过自己的思考,想到了一种比较形象的方式来...
  • wujiaxian
  • wujiaxian
  • 2014年10月11日 11:32
  • 2758

java 接口interface和抽象类abstract class 之间的区别

Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,他们的区别如下: 1 Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Ja...
  • rually
  • rually
  • 2014年12月13日 20:14
  • 594

抽象类(abstract class)和接口(Interface)的区别

前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换...
  • qq_40884473
  • qq_40884473
  • 2017年11月04日 13:11
  • 36

抽象类(abstract class)和接口(Interface)的区别

前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换,因...
  • aptentity
  • aptentity
  • 2017年04月01日 11:53
  • 1180

Java 深入学习(3) —— 抽象类(Abstract Class) 与 接口(Interface)的区别

抽象类(Abstract Class)Java 提供一个叫 抽象方法 的机制,这种方法是不完整的,仅有声明而没有方法体。abstract void f();包含抽象方法的类叫做 抽象类。如果一个类包含...
  • HeatDeath
  • HeatDeath
  • 2017年11月29日 00:33
  • 101

抽象类(Abstract Class)与接口(Interface)区别

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和inte...
  • longlongwen
  • longlongwen
  • 2013年11月15日 18:17
  • 415

java接口(interface)与抽象类(abstract class)的区别

很久没有看到如此精辟的文章了!作者写得实在太好了!正在学JAVA或者想了解抽象类与接口的朋友,绝对不可错过!本人极力推荐! OOP中接口与抽象类的区别 Java语言接口与继承的本质 深入理解接口...
  • zgrjkflmkyc
  • zgrjkflmkyc
  • 2013年09月30日 21:08
  • 5854

(2.1.15)抽象类abstract class和接口interface的区别

相同点: 都是支持抽象类定义的两种机制都不能被直接实例化其子类或实现类都必须实现了对应的抽象方法后才能实例化 ps:abstract只能修饰类和方法 不同点: 【关键词】接...
  • fei20121106
  • fei20121106
  • 2015年04月07日 13:27
  • 443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员-抽象类abstract class 与 接口interface 的区别
举报原因:
原因补充:

(最多只允许输入30个字)