|
该用户从未签到
|
abstract class 抽象类--不具体的类8 U: \8 ^9 Q% L4 r, d% e ~
# ?1 t6 G; x2 G P$ V2 d* h: s/ y abstract: 抽象的, 是指不够具体, 概念性的, N( l5 e4 j! U3 k7 M
3 u' p; `4 `8 S2 ?3 N
1) 抽象方法,只有行为的概念,没有具体的行为实现。
3 D5 o: X; m* i1 j2 W 使用:abstract 关键字修饰,并且没有方法体。
3 w) S0 l; x' l% Y 2) 包含抽象方法的类,就一定是抽象类。4 P4 |2 [. r) n% K% \
使用: abstract 关键字修饰,包含抽象方法。7 N& [" B& d; i2 b& L
如:平面图形一定可以计算面积。# X& Q- V- d* s6 I' q3 t. W
/ ] \# e. I1 q1 ?
3) 抽象类不能直接创建实例。可以定义引用变量。
8 w6 E: C) r* n8 x6 q% J8 ? 4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实
/ R. r+ f0 A; L' `3 K 现所有抽象方法。 - h( Y( [4 }4 v. r1 ]- S
5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。# N1 U# {, v3 _" {3 N
public class abstract CRMSystem{. Z: T$ u) W% w- e! S
public abstract Client add(Client newGuy);
) r' e! ~$ E9 |: X3 ^ public abstract Event add(Event e, Client guy); f9 [& C3 B5 X0 w( N: {; e
public abstract Event[] todayEvents();& N: b/ W. d' ?7 I8 p! u
}
( v& \) L. H4 E9 r3 L, p. q- b' Y
接口, 相当于纯抽象类(cpp纯虚类)
( M3 |4 |* B$ h7 y9 d( G 1 接口:全部的方法都是抽象方法,全部的属性都是常量。
3 v4 ^# i9 Y) e 接口用来表示纯抽象概念,没有任何具体的方法和属性。
Q K1 k" ?0 K public interface CRMSystem{7 \4 ]' L1 r1 w( {% f1 Y# O9 P
Client add(Client newGuy);
! K( W4 l0 {% L; L/ _0 M Event add(Event e, Client guy);
7 _# Y6 Q, ]' J# f! p; h, x Event[] todayEvents();' N1 @, q; O" l$ ^4 ]: A
}
: o; p" v5 m- k) t: ]" E7 b3 [ 2 不能实例化,可以定义变量。' c# z9 i. \& ^+ @0 M& G
3 接口变量可以引用具体实现类的实例。6 |, N2 o4 ~; ]$ y, R
4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的& G$ a7 G2 r2 p. v
抽象方法。7 g' _+ F3 N& `
5 接口之间可以继承。
/ o# T. X; o- ? 6 一个具体类可以实现多个接口,实现多继承现象,表示:) @8 W0 \9 c/ P' Z9 A. M1 ^
一个概念即是XXX也是XXX.
: W6 f g* R" _: w( G 7 接口中的属性,默认是常量 public static final * h( o. U& \9 I
8 接中的方法一定是:public abstract . N8 y' x! F& h6 u" f2 N: b
9 实现一个接口,使用关键字implements, 实现实际上是
% T# u" N$ O- U- A 一种继承关系。接口和实现类是父子类型的关系+ `# ~/ x6 s0 G7 Y
* [; _, P: {9 ?2 P% X/ R- d: Y- j/ V) ?: R! q k% v
|
|