该用户从未签到
|
abstract class 抽象类--不具体的类, y: ?4 B( ^. p+ h! y' W) ]
6 }+ y; v! J+ _- t7 ? abstract: 抽象的, 是指不够具体, 概念性的5 }% K9 S& t) d- A% S3 R
2 N+ C/ R- d' Y3 `9 O 1) 抽象方法,只有行为的概念,没有具体的行为实现。2 N5 i- k& T a1 w L
使用:abstract 关键字修饰,并且没有方法体。4 x+ t- K) \/ u0 _. \
2) 包含抽象方法的类,就一定是抽象类。
3 |* {2 S1 y* W! J4 y0 [/ r 使用: abstract 关键字修饰,包含抽象方法。1 X' ^* S, h' H4 Q
如:平面图形一定可以计算面积。
# o9 Q) z- Y7 v3 |, [2 [$ ~
5 u; W- z/ s9 g! H% I/ s 3) 抽象类不能直接创建实例。可以定义引用变量。" y- F: N) i; W! \' F
4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实' B/ D3 G3 L- j3 [
现所有抽象方法。
6 z. j; J9 T8 D s$ x 5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
; q! t" \: R7 O" Q' q! G public class abstract CRMSystem{6 y) x' p& ~: c
public abstract Client add(Client newGuy);% S( N7 U" B1 T- G1 T, _
public abstract Event add(Event e, Client guy);
/ H' F& c7 M6 m7 u9 E2 Q( f public abstract Event[] todayEvents();3 X. A* g: M l3 R/ Y+ q8 q
}
- u# H* _- j; q1 @- J. y! P4 X% B& V8 ?
接口, 相当于纯抽象类(cpp纯虚类)
: r0 W. K, q8 i8 _ 1 接口:全部的方法都是抽象方法,全部的属性都是常量。
7 o3 m$ h! S( w2 z2 G 接口用来表示纯抽象概念,没有任何具体的方法和属性。
* W$ Q6 p j7 q% i public interface CRMSystem{( c+ M/ `. A) F/ v7 S! y; f1 W, j D
Client add(Client newGuy);9 T h2 v( o$ Z# y
Event add(Event e, Client guy);4 U( r8 r5 N! p, y
Event[] todayEvents();
1 z' t: y/ j6 t, O }& G6 \3 a. ]' }+ R! g
2 不能实例化,可以定义变量。
# u: [$ `- _7 K$ \: _9 h9 y 3 接口变量可以引用具体实现类的实例。
, J8 B0 v+ P# K# k: V* y 4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的3 S+ y7 ?) E# D; _" O# m! Q
抽象方法。2 R6 D0 `. | R) B) \. P
5 接口之间可以继承。
0 L9 ~' A) b7 t# u8 z+ y i 6 一个具体类可以实现多个接口,实现多继承现象,表示:4 v+ I O, ?; E. T
一个概念即是XXX也是XXX.
L7 B- u% y6 b 7 接口中的属性,默认是常量 public static final
4 Q5 j/ F8 w* d7 V6 z' J2 q 8 接中的方法一定是:public abstract
' E* A- I% p. {$ T0 {& l9 Q 9 实现一个接口,使用关键字implements, 实现实际上是
9 t2 `/ J% z+ k8 k/ ^ 一种继承关系。接口和实现类是父子类型的关系- g ^- v* o _
7 g: i5 O S7 P. I; j& _4 Z: X4 X
( ^2 ]0 J0 {2 u2 I2 K! g) [. R M
|
|