该用户从未签到
|
abstract class 抽象类--不具体的类
: e' ~6 _! X, J! X: |
, o! N7 b. a4 O0 B abstract: 抽象的, 是指不够具体, 概念性的
- y8 \" f+ T8 D3 ~ G5 I% A) j* p! p+ Z7 P
1) 抽象方法,只有行为的概念,没有具体的行为实现。
" B$ Z- ]) A' T$ z8 q 使用:abstract 关键字修饰,并且没有方法体。
7 ]! [% ~" K. F0 l" R- A( @ 2) 包含抽象方法的类,就一定是抽象类。
/ x/ W" ]/ g; Q, F5 X$ E8 J4 n4 p! B 使用: abstract 关键字修饰,包含抽象方法。* {7 Y# F8 _& @9 z! {
如:平面图形一定可以计算面积。
5 q! m- q* m4 R
; _1 X8 f1 l/ k6 c 3) 抽象类不能直接创建实例。可以定义引用变量。
4 V; u( m6 i* q. z9 f! C7 k6 { 4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实
' m6 g9 s" o3 |' B( q2 Y 现所有抽象方法。
5 P l3 Q1 o# K0 m9 I# W2 t3 p 5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
6 B- l" u6 }& _( W/ s' V public class abstract CRMSystem{- E. r) {0 g% Q. C
public abstract Client add(Client newGuy);
! R; q9 p1 r- M$ y public abstract Event add(Event e, Client guy);
2 W. G" m7 A; n) [1 G/ \+ z public abstract Event[] todayEvents();5 A% s( g7 p6 {8 U: W
}9 \' L/ ?( x$ J% n
1 A0 @ x- c" p e8 ^3 s* C 接口, 相当于纯抽象类(cpp纯虚类)
& k4 D: Q; M! y 1 接口:全部的方法都是抽象方法,全部的属性都是常量。
7 @: E$ P V/ y, Y- r1 u. F2 k( H 接口用来表示纯抽象概念,没有任何具体的方法和属性。6 ]" a& j, |5 x: X& `6 Y+ f
public interface CRMSystem{
4 p. {0 C$ |& `5 u. T" ^ Client add(Client newGuy);
3 F6 Z$ K% X' d& }$ J Event add(Event e, Client guy);6 x# X* c! T4 }1 ]
Event[] todayEvents();
0 g9 ]1 G. C# f: q, I }2 j% y0 K* s) }; _* V
2 不能实例化,可以定义变量。
* M, n' r* D( i# r! h) c- A# ] 3 接口变量可以引用具体实现类的实例。
: a# _1 x' S( x; V" h2 y$ { 4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的/ b' f, _* F" u
抽象方法。5 Z9 l6 l/ _- o
5 接口之间可以继承。& O9 Q, _. h4 ^: t
6 一个具体类可以实现多个接口,实现多继承现象,表示:1 H T- y3 e4 N N
一个概念即是XXX也是XXX.% o1 {0 M% Q: L
7 接口中的属性,默认是常量 public static final # z* S7 P$ ^% W, W+ Y3 G, L
8 接中的方法一定是:public abstract 9 ~7 \+ p( m+ X! c
9 实现一个接口,使用关键字implements, 实现实际上是
# h! b# d, `) u 一种继承关系。接口和实现类是父子类型的关系1 g" T" V% d- v- c9 a
) u/ \8 F( [) k4 `( Q
- i# d! z% r$ G |
|