|
该用户从未签到
|
abstract class 抽象类--不具体的类
- a8 Y9 T8 o6 g4 u. h) w- h1 @0 ^* B1 n- m
abstract: 抽象的, 是指不够具体, 概念性的/ w7 H1 r2 x+ Z) j6 k, H! t9 s8 m+ K9 D' B
4 M# O+ X& [# n4 q7 p 1) 抽象方法,只有行为的概念,没有具体的行为实现。
& e! ^! Z+ A9 A- l+ D7 Q 使用:abstract 关键字修饰,并且没有方法体。
/ J$ p/ ^# \4 C, `' o' f 2) 包含抽象方法的类,就一定是抽象类。
7 t, a7 I$ O& s- l: Y$ L) r5 q4 l0 x 使用: abstract 关键字修饰,包含抽象方法。8 e4 W& A4 s. n* i) Y2 \ v8 ^
如:平面图形一定可以计算面积。
0 v) B& M! _8 Z2 w1 |; s+ I6 u- e, I
! L8 n% d9 X5 a 3) 抽象类不能直接创建实例。可以定义引用变量。& ^ Q6 K# Z1 D3 P+ [
4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实" X9 l4 u! o5 x& T) m1 L
现所有抽象方法。 ) t6 u; j4 P) C) V W0 G
5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。) P: a; n* m/ a f7 G1 q( d
public class abstract CRMSystem{
9 x: E- i( O' x& v public abstract Client add(Client newGuy);
7 M5 C- S% Z! b- I public abstract Event add(Event e, Client guy);% w+ ~9 }5 u, F1 M- Z
public abstract Event[] todayEvents();% y- w1 |2 Y- _2 F8 N, Q
}
$ }3 d, r3 C& R( N# e0 l, F& C8 S/ b' e6 U1 @, v+ p
接口, 相当于纯抽象类(cpp纯虚类)
- V/ v3 |4 s( A v1 M 1 接口:全部的方法都是抽象方法,全部的属性都是常量。! x9 w: ]0 Z) `6 k) V
接口用来表示纯抽象概念,没有任何具体的方法和属性。
; v( J( p8 B: H1 p public interface CRMSystem{
" N0 p7 R) `- _% o( m Client add(Client newGuy);& Q$ l$ P w0 C% o+ G/ Z
Event add(Event e, Client guy);
4 M8 u& B9 E* \0 `. k0 J Event[] todayEvents();1 O% \/ w9 P; g, S" Y3 }
}
% Z' A5 C; G3 E; X 2 不能实例化,可以定义变量。
, v% O' n+ i2 Y$ v) ] 3 接口变量可以引用具体实现类的实例。. h, \2 w, P o, u+ m
4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的
; i; @5 m. y* D' t; [ [ 抽象方法。% ^7 g& Q1 a& X, X' S- x
5 接口之间可以继承。3 |* m8 W$ b6 Z' ?* Q0 y! U
6 一个具体类可以实现多个接口,实现多继承现象,表示:% i" x- z$ C: W. W& _4 K" Z
一个概念即是XXX也是XXX.
* \7 |" t8 N0 P9 p 7 接口中的属性,默认是常量 public static final
0 M* r" R- O- z3 Z/ ^6 E' {, D$ C) }. w 8 接中的方法一定是:public abstract 0 A5 U, ?, s9 C6 S6 F$ C
9 实现一个接口,使用关键字implements, 实现实际上是
- h- T+ |; z) \6 B/ z6 ^- f 一种继承关系。接口和实现类是父子类型的关系( {% l3 d0 I/ o3 t- V, u1 {
2 H. {# {& M) L% |: q
, F! Y7 v) E8 z2 l S* V
|
|