我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > java开发中 抽象类和接口的区别
总共48087条微博

动态微博

查看: 1645|回复: 0

java开发中 抽象类和接口的区别

[复制链接]

96

主题

7

听众

406

金钱

四袋长老

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-09 21:11:52 |只看该作者 |倒序浏览
abstract class 抽象类--不具体的类
( I, Q, t4 Z( G! U9 ~' M) x* P3 f( ?! \9 n; `: J! {
  abstract: 抽象的, 是指不够具体, 概念性的/ o1 [/ m  e! ~, g4 G2 f5 i9 ?8 H

: N* }$ O6 p3 ]! m, l 1) 抽象方法,只有行为的概念,没有具体的行为实现。
5 t) M, h9 L3 E7 c* [8 H   使用:abstract 关键字修饰,并且没有方法体。5 z/ ^! h0 T9 F. B
2) 包含抽象方法的类,就一定是抽象类。
/ s1 C0 ]: h+ x- k# P   使用: abstract 关键字修饰,包含抽象方法。
  A' v5 l9 t) N. @" v2 l: K  如:平面图形一定可以计算面积。
( u9 t' P6 {' k  [9 l* [4 K; V7 y4 O7 g0 H3 _& @
3) 抽象类不能直接创建实例。可以定义引用变量。: x( L: ?7 K- P9 ~. {
4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实" c8 M$ X: `$ `" M/ B
   现所有抽象方法。  
- A- i: |. ]5 `9 e, v- ~: a 5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
$ s- }+ c: ~: k9 w: `, m        public class abstract CRMSystem{8 z6 y* s: J; u1 ~5 e
          public abstract Client add(Client newGuy);, L( z' O0 Z) i. e0 ?' v- _) v8 t
          public abstract Event add(Event e, Client guy);, f9 ^3 Y5 V8 c. u$ r
          public abstract Event[] todayEvents();
0 p; Y: o/ G) y+ p8 O+ f  Z        }
8 ]% W* c1 n; {/ Z3 Y! D9 x5 }8 B3 F' m) ^/ @: e( o5 x/ N  y* g! g
接口, 相当于纯抽象类(cpp纯虚类)1 N# Z' m5 N9 p7 v  d+ V
1 接口:全部的方法都是抽象方法,全部的属性都是常量。5 n2 I3 R4 I3 J4 i7 x
   接口用来表示纯抽象概念,没有任何具体的方法和属性。
# A, H: u5 z2 P' D   public interface CRMSystem{, t" A$ d. A7 L# X7 J- ^+ l  P0 \; D
          Client add(Client newGuy);2 Q( H1 S, B5 U# o9 i
          Event add(Event e, Client guy);+ q' L. P% x% o2 [* l/ ]6 q( W
          Event[] todayEvents();" L/ r; g3 N  B6 \, b" z  p
   }
$ f0 P5 ~2 Q1 K8 T  p/ n 2 不能实例化,可以定义变量。  }' }3 r& k% X+ |
3 接口变量可以引用具体实现类的实例。
3 c% E8 ^( n4 x% b. t8 q 4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的  D6 u$ |  l# |- [
   抽象方法。8 q; y) g. V( x
5 接口之间可以继承。
0 [4 u- |, u: W  r: S" u7 k: t) B 6 一个具体类可以实现多个接口,实现多继承现象,表示:
& y3 n; A5 O5 l 一个概念即是XXX也是XXX.
/ u$ v% }7 ]2 r* o  J 7 接口中的属性,默认是常量 public static final ' w: `: X+ Y0 Q4 _$ Z
8 接中的方法一定是:public abstract 5 \6 t/ R4 D8 U4 {- I# h. o" I
9 实现一个接口,使用关键字implements, 实现实际上是
+ d, v- T: ^( C# \# q1 ^( v# z   一种继承关系。接口和实现类是父子类型的关系
' T) ?( \! D2 E: O& z2 G! s$ J& u* J$ Z
% j; F0 L7 D+ x2 o% ?. _' v4 J$ }' }$ V3 m4 o. g

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表