该用户从未签到
|
abstract class 抽象类--不具体的类
% K$ \& k2 }$ X9 z4 I8 V3 _& E$ b' a) V7 c8 {
abstract: 抽象的, 是指不够具体, 概念性的
I3 f7 y' r% R `
9 l3 p. \1 [6 k 1) 抽象方法,只有行为的概念,没有具体的行为实现。" n# l/ M4 W) P* W8 [
使用:abstract 关键字修饰,并且没有方法体。7 Q" s5 K3 i4 j
2) 包含抽象方法的类,就一定是抽象类。8 L" J7 _& ^6 A5 a
使用: abstract 关键字修饰,包含抽象方法。. K# N2 t$ n& K# `
如:平面图形一定可以计算面积。
& R8 F( X( Y# M6 k: B& A6 U q& T0 w
0 Y7 `6 n4 C; C/ F7 X' W 3) 抽象类不能直接创建实例。可以定义引用变量。" }3 Q9 {; z, v: J2 v$ d
4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实* {' Z$ l3 r- X& T; @
现所有抽象方法。 % H3 a) H% k* O2 P/ {: u+ @
5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。
( V: \- a$ h6 J) q) d public class abstract CRMSystem{
7 E5 _- l* i3 _1 p2 g public abstract Client add(Client newGuy);) y& }) z6 p! u' d- V* K
public abstract Event add(Event e, Client guy);
6 K: u# \- y! m, A public abstract Event[] todayEvents();
; n" r- U. l9 |6 t }& V: }* m" c7 C
# C7 d9 k5 S" X+ h6 c
接口, 相当于纯抽象类(cpp纯虚类)# ~$ t% s$ n, E) W6 H0 q
1 接口:全部的方法都是抽象方法,全部的属性都是常量。. o/ T: O. X8 ?& b
接口用来表示纯抽象概念,没有任何具体的方法和属性。4 q+ J) G6 m& @# q0 m
public interface CRMSystem{+ G; H6 @; o p5 L% K
Client add(Client newGuy);. C6 k$ g5 B5 k- @# V
Event add(Event e, Client guy);
4 w6 J* j ^! L, D- b Event[] todayEvents();
5 b* a. m+ u4 I$ R }
8 I* m; S# l) O2 I3 ~3 ^ B. t 2 不能实例化,可以定义变量。
z. Y' Q% [; ?6 v2 Y 3 接口变量可以引用具体实现类的实例。
0 e4 s& u3 E! M* L$ _( O 4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的- f' d4 ^6 }; M2 N/ e
抽象方法。" S0 f0 `5 D# x7 _# n ]
5 接口之间可以继承。! X5 b4 W a% [1 q
6 一个具体类可以实现多个接口,实现多继承现象,表示:. q3 o/ ^) r1 a8 y- }
一个概念即是XXX也是XXX.
0 l' ` q/ d0 X0 ^. f 7 接口中的属性,默认是常量 public static final
5 }0 Q2 ]+ I) s1 ]; V! j7 | 8 接中的方法一定是:public abstract
: X# V4 h! C0 P, [- S 9 实现一个接口,使用关键字implements, 实现实际上是
8 l P( P+ W r/ h& B! | 一种继承关系。接口和实现类是父子类型的关系
3 }$ q; i |; E5 Y/ x; s0 N* U/ ^' ]+ w0 l6 s" x5 z
) W6 K8 Q m5 I( y8 Q$ H+ T
|
|