该用户从未签到
|
abstract class 抽象类--不具体的类
: h/ }( Q4 H: D' `( t9 I4 v
2 N1 v( H0 G6 _ abstract: 抽象的, 是指不够具体, 概念性的6 }% K8 y5 y# r6 [
; x# c, Y! \* Q% A4 U- z2 v 1) 抽象方法,只有行为的概念,没有具体的行为实现。8 [0 O$ z4 K2 O; g; I. O9 N
使用:abstract 关键字修饰,并且没有方法体。, P* V9 [8 e) I- N# j H
2) 包含抽象方法的类,就一定是抽象类。
/ x9 O. K% x2 u 使用: abstract 关键字修饰,包含抽象方法。
7 e* \" X& m. V: H 如:平面图形一定可以计算面积。
$ J \! d5 R% g, h* |$ w: T3 `" D8 k" W
3) 抽象类不能直接创建实例。可以定义引用变量。
( N" b* G, o+ p& z6 J6 G8 Q 4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实
" g3 H& Q; j% ^+ v. B2 O 现所有抽象方法。
# b T3 |9 F6 h 5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。! o/ `2 ^( P; F/ c! D4 l# F
public class abstract CRMSystem{" v. q* } _3 k! ?7 `( _, `. V4 B
public abstract Client add(Client newGuy);
6 i" b! a- q Z" [, u public abstract Event add(Event e, Client guy);
6 z+ |3 R( ~6 w/ C5 @+ b' v public abstract Event[] todayEvents();4 r* F) N2 _5 B! K4 S
}4 W5 L; _5 _ f, F
9 s6 q, H! Y/ S 接口, 相当于纯抽象类(cpp纯虚类)' [" W$ A: s9 I( H0 d
1 接口:全部的方法都是抽象方法,全部的属性都是常量。% p4 f4 n' u+ q3 f. @( W" p
接口用来表示纯抽象概念,没有任何具体的方法和属性。
! S, ]6 v8 c1 h o4 W public interface CRMSystem{
. Q, i' c% Q0 b5 B6 _* N2 R4 Z Client add(Client newGuy); Y' H' P2 I% |5 R$ D, s% m- y
Event add(Event e, Client guy);
2 t0 c& y! P! G$ P Event[] todayEvents();
7 a1 D q& L9 D }" z" ~) A$ N- E) k3 @
2 不能实例化,可以定义变量。1 F9 d. G# d! m4 G3 m4 B5 R! T
3 接口变量可以引用具体实现类的实例。* |3 ]4 p5 Q1 d! s- l
4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的
/ s8 O" h0 x9 G2 d3 [# U' [ 抽象方法。
9 I: A% b+ |* ^& ?/ ? 5 接口之间可以继承。
1 }1 L$ d' b, u7 I- s% D: G9 I 6 一个具体类可以实现多个接口,实现多继承现象,表示:$ K5 x7 H; v6 A3 s6 q9 ?
一个概念即是XXX也是XXX.
, ]2 i/ D4 X# l7 B2 g8 g. i 7 接口中的属性,默认是常量 public static final
% D, {; B. Q3 V: P 8 接中的方法一定是:public abstract
! A N+ U% e0 _& e6 d 9 实现一个接口,使用关键字implements, 实现实际上是! D1 u/ X- M2 I. y
一种继承关系。接口和实现类是父子类型的关系
" ~- J1 H1 ~0 \' j' I( U* ?: O
9 R; C6 M" m% @6 q( G9 J" X0 M3 ? `6 S Z( ^( X
|
|