该用户从未签到
|
abstract class 抽象类--不具体的类
7 @7 I `7 Y b. `2 w+ ?8 X3 s3 F+ s$ j0 g6 r. _
abstract: 抽象的, 是指不够具体, 概念性的
8 b" G+ r8 x# P/ R4 k- z: R' m! U6 c- }
1) 抽象方法,只有行为的概念,没有具体的行为实现。4 T" ?; T" c; j/ R/ N
使用:abstract 关键字修饰,并且没有方法体。% X- ]" T) T( N0 D
2) 包含抽象方法的类,就一定是抽象类。! B3 B- F" \2 l8 K& t# `
使用: abstract 关键字修饰,包含抽象方法。) \+ I5 B6 m1 ?* a5 c5 t8 p5 N
如:平面图形一定可以计算面积。
* v5 f6 U! U/ w W( m5 `1 `# f. c: L4 ]4 L9 x1 [! z
3) 抽象类不能直接创建实例。可以定义引用变量。
$ U& i3 f8 r4 T9 z; p8 V9 P& h- R5 H 4) 抽象类只能被继承,一个具体类继承一个抽象类,必须实
* S1 S! g9 b2 i- I( d 现所有抽象方法。
- U# F5 x$ N/ p! B5 g 5) 抽象方法和抽象类非常适合作为系统的分析和设计的工具。' d2 m9 W1 f6 Z7 a: a
public class abstract CRMSystem{
/ {' g9 q% C) ?+ s* N public abstract Client add(Client newGuy);
+ H1 ~& s! {5 } public abstract Event add(Event e, Client guy);
8 ?6 u; Z2 U3 w1 G$ v: V public abstract Event[] todayEvents();
0 p! o3 Q, C u9 n3 G m6 H }7 E+ K$ M4 H- I9 h# n
( b, |0 ] z& M7 C# y& i 接口, 相当于纯抽象类(cpp纯虚类)
2 U* U9 |) M9 C* K" W9 A6 w+ m 1 接口:全部的方法都是抽象方法,全部的属性都是常量。
* s' e5 K1 u- S$ }4 L9 y 接口用来表示纯抽象概念,没有任何具体的方法和属性。1 V6 o, S% s1 \9 s
public interface CRMSystem{
$ U, O3 h/ h) v* X F: v Client add(Client newGuy);
; p6 i" c/ m, B, V' [$ a' y Event add(Event e, Client guy);$ ^# ^( D& n+ f; s& d* h+ r1 a- N
Event[] todayEvents();
3 \" ], p" p# W) K' ` }
4 r& I: g d+ h0 b( X9 K 2 不能实例化,可以定义变量。
m0 [2 ` b `: p* M( Y6 H. L 3 接口变量可以引用具体实现类的实例。5 b; r( T1 Y+ _. R. h8 \4 G( ?, r
4 接口只能被实现(继承),一个具体类实现接口,必须使用全部的" R7 V9 F9 \" W, B% U5 \" J! D8 F0 F
抽象方法。- ^3 }/ U. i/ R: Z7 w, b, ^8 b' J
5 接口之间可以继承。
9 I) P9 W& E- k 6 一个具体类可以实现多个接口,实现多继承现象,表示:
* L8 `4 G6 x/ N6 D/ \ 一个概念即是XXX也是XXX.0 [5 ], c6 |* V- f0 V* o5 k
7 接口中的属性,默认是常量 public static final $ t/ b4 a8 Q0 [+ W; a l
8 接中的方法一定是:public abstract 1 H2 u l/ C, Y, B, t; P: E
9 实现一个接口,使用关键字implements, 实现实际上是: s# ~/ ?" V9 h. L
一种继承关系。接口和实现类是父子类型的关系# T) S' S' k$ a6 o( e/ C
6 | l2 \+ m2 S* s I# c
4 w$ g: z7 h8 O |
|