java中,在建树一个新的对象的时辰,会挪用其父亲的机关体例,测试轨范如下:4 N0 K; n4 H. O4 W. y* Z
6 i2 P9 m3 _3 ~5 m, K: L9 u/ [1 Y
class parent{& m- u2 j/ S) {8 D3 ~
* C# m8 |. @+ d. R# s2 x9 D7 q+ _
int a=5;
& x2 l: s/ b4 [1 A4 ~
- o& D. O0 a- ~* ~2 T public parent(){$ h9 J" w. w9 V$ b* B4 R
1 g4 Q- X, O, t
System.out.println("a="+a);. \: A) L) z2 w% Q1 |
& |$ r+ H- ] `/ D5 d" Y- r0 c
System.out.println("parent()");
# u6 n4 ~0 |2 S# n3 _6 E5 j+ Z0 n0 h 1 y/ F9 G5 [1 k6 l3 r$ N
}
/ M V' K3 w- a1 h 7 T Q& @' X. t+ a
public parent(int b){2 B2 Z1 W% Y" a; l& n
7 r' [2 c) c M; b/ X5 i
System.out.println("a="+a);
5 f" S, s; W) o: k* e
$ U2 k. _; h) g System.out.println("parent(int a)");
1 r/ ~6 r# d$ y0 P* s6 C# w8 i# ? & i& D" W2 Y5 o. X4 f
}
: r3 J$ F% u* B/ |% x' d7 i
! e; r W5 B) e) r' {( t }/ Q" N9 F+ |- C( B1 @8 n* U
% O3 X# ^6 S# Q( ]$ u& @ a class child extends parent{% J3 l0 S2 q, c; X
. Z' l& a2 o% D
public child(){* l2 \ @: K, p
/ \5 P. u* g9 w( P7 v super(9);
) p3 M; }, `4 v5 M \ ' j1 y. W1 p+ p- R6 c: v
System.out.println("child()");
- Z# X6 a: h/ D& X- Z
3 {9 `* g. f P( Q6 t/ t8 j/ x/ g }+ f' X/ v8 S4 c2 x1 f' K
) t ~. x& T1 X2 q+ s
}
5 `7 A- Q8 V: o" _6 O
* o3 ^( u" o9 E8 u public class Test{. \+ p0 x: a' D, |0 I
2 z; j" O8 _0 W& C" ~8 N H2 o$ o9 E
public static void main(String[] args){) a$ M( g G7 Z4 J$ I R- s
) V( \' K+ w: F; l8 ^ child c=new child();* l: m: q' x% Z7 R8 q: s7 n
$ k5 ?. u* e* J; H2 R
}! u1 L. c+ p& T' R* ~+ S
7 r/ k5 K" n9 y8 J$ a }
1 O' x3 ~3 ?' L, T0 v# M" R' I . ~2 n7 I$ U @3 S) h3 m
此时的输出结果为:9 f; M: p2 w9 t" d+ n# f' Q9 l
8 _! z1 q6 @. ~( w a=5
. _3 g5 o: J5 Q9 n& r, |" S
5 W8 |* b; `3 S% i- m; H+ | parent(int a)
& R# r. V6 U$ ]
4 Z: B: K- U2 M" O' ^# I' z- `! H child
4 J, Y. [' \9 C! W; y. E; H1 E 0 @1 H& v0 k/ g. Z# r- d
而如果去失踪parent的无参机关函数,且将super(9)注释失踪,则会发生错误,提醒找不到parent()体例。因为,如果不显性的使用super,子类会挪用父类的机关体例,而只要显示的写了机关体例,缺省机关体例就不存在了。 |