|
该用户从未签到
|
abstract class 抽象类--不具体的类; r/ t6 w2 ]* |, L5 ^
+ e S# j8 r2 }1 e
abstract: 抽象的, 是指不够具体, 概念性的
+ P: A R7 X, R$ X" g D' U! U# r) b# Z) v) m
1) 抽象方法,只有行为的概念,没有具体的行为实现。+ K. f5 D: t" I6 x* I0 i( ^
使用:abstract 关键字修饰,并且没有方法体。
) T: m8 M! }( k& C% W* \( i! I 2) 包含抽象方法的类,就一定是抽象类。1 m' @2 w0 H( A
使用: abstract 关键字修饰,包含抽象方法。2 f9 v4 K0 ?2 o. ]
如:平面图形一定可以计算面积。
* O5 g3 q& @& [) I' I
; L3 `4 P& b" ~! F u 3) 抽象类不能直接创建实例。可以定义引用变量。; _& h1 Z6 H! ]3 s! v9 _* J
4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实
. U5 I. L O) x1 Y4 S6 C- R. B6 J2 a 现所有抽象方法。
$ I; v! F& M/ e4 I% @$ B6 V 5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
) F6 y4 a9 n! R! c8 M# J5 t public class abstract CRMSystem{; R8 w0 h: Q4 |" R; o( j/ @
public abstract Client add(Client newGuy);
$ B& l, i& y; |( |* R public abstract Event add(Event e, Client guy);% {7 z9 k3 E( m/ t/ H& B
public abstract Event[] todayEvents();
5 {. A w1 u3 {# c }5 G7 u( G* ` U" r
$ `( m& K0 E% \4 E# F
接口, 相当于纯抽象类(cpp纯虚类)7 b, B: ?# r! t2 L1 u& p: j
1 接口:全部的方法都是抽象方法,全部的属性都是常量。
/ L% A7 M: [2 k3 V, y$ [ 接口用来表示纯抽象概念,没有任何具体的方法和属性。6 I1 L+ \% @; O# [/ M. O; _
public interface CRMSystem{
4 t' @- @& S5 k N3 \ Client add(Client newGuy);
/ M# V4 u6 D) ?3 h' A Event add(Event e, Client guy);
8 P$ _3 Z( H! O8 W' U Event[] todayEvents();2 e+ p) R+ G- \6 {
}$ S' p# j/ S. x6 C1 t1 Q
2 不能实例化,可以定义变量。4 w( n6 q- t" h7 B! ^5 y# A
3 接口变量可以引用具体实现类的实例。" b+ c0 w* p. A8 Z# R1 q
4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的 u% J u& x1 k* V4 J
抽象方法。6 k% k8 c9 p8 ]7 {- ?: z
5 接口之间可以继承。: I+ c$ q# |: t/ H
6 一个具体类可以实现多个接口,实现多继承现象,表示:
* w0 e( i4 |2 T8 k 一个概念即是XXX也是XXX.
1 M- _, `9 N. d! K$ _) N 7 接口中的属性,默认是常量 public static final
4 g# g0 C2 r( v% \3 ]$ N8 `5 a 8 接中的方法一定是:public abstract
5 _0 |& _# u- `4 F 9 实现一个接口,使用关键字implements, 实现实际上是2 y, F) x5 j1 V% L
一种继承关系。接口和实现类是父子类型的关系9 R! P8 g1 u2 q) ^+ m$ q
; G- J: Q4 P5 i, a1 _
3 F! g z: c( }8 }, F. p! H
|
|