机关体例是一种非凡的体例,它的担任轨则斗劲简单,而且与通俗体例有较年夜的区别 1 无参数机关体例的机关体例度例5 F3 M" L! R* d. z4 X
class hasConstructor{% @# o3 O8 s6 w( h
protected int x=100; l+ O, n2 _) l) A4 L$ n. S- b' M! i4 J3 J
public void showMsg(){0 {" b8 d K9 O" s+ D0 O
System.out.println("this is a method in ancesstor");& Z' a5 s/ Y/ [% m* K1 ?
}1 k9 I2 f% k% {1 R$ v5 |. D
public hasConstructor(){
! ~; _! H9 a8 z# l System.out.println("this is a constructor in ancestor without parameter");
1 m5 t: n. R0 N' N: e- g }
- }4 S0 Z) w* l% D: L" F public hasConstructor(int ix){. w' J& n1 I6 g
System.out.println("this is a constructor in ancestor with parameter");. J) T2 W4 n+ [% W3 p [( l
}
* k$ T3 g* R6 |* d1 ?; i2 M }
# Y% t% x3 t% f; \/ R9 ` A, ] 下面这个子类会自动挪用不带参数的机关体例
, e' L5 ~7 I$ j& E public class inheritConstruct_1 extends hasConstructor{
/ ?: O! Q4 H7 f9 k0 ? public static void main(String args[]){
2 q, N; V$ \' D; M, t, g3 Q! Z8 L inheritConstruct_1 oa=new inheritConstruct_1 ();5 {* m& r" r, B" m$ [4 n8 ~! y* } i
}
" H0 R; E1 Q# }8 m- B }
2 C: n2 K: M- } K- Z 在类inheritConstruct_1 中并没有界说不带参数的机关体例,但挪用的是父类的不带参数的机关体例,这看上却是一种担任,现实上系统是为子类添加了一个不带参数的机关体例,而子类这个机关体例又会自动挪用父类无参的机关体例。
# {, I: u# c2 x' }4 T1 D' A% G/ w 2 带参数的机关体例的担任: @( d2 ?2 G5 Q
带参数的机关体例不会被子类担任,也不会自动挪用1 f# |) d# ~: T5 W
public class inheritConstruct_1 extends hasConstructor{
- f3 V: d& Q% s d& R3 q* j, Q9 m public static void main(String args[]){
, S9 t# s1 D- E" c! S, R3 [- \6 {& I inheritConstruct_2 oa=new inheritConstruct_1(100);# }7 f1 y# I5 U) z' d3 j
//错误,试图挪用不带参数的机关体例,它没有被担任下来! I& q: G H4 V3 C& L% S
}0 D) P0 |7 ?6 ~. Q3 m. f* s& u. R
}4 U' ] F, u$ p: j/ b
3 无参数机关体例的笼盖/ J* g% m4 s! F7 ?6 }# m
首先明晰一点带参数的机关体例不会被担任,也不存在笼盖的问题,是以只有无参的机关体例才存在笼盖章个问题,可是因为机关体例必需与地址的类同名,而子类的名称和父类分歧,是以机关体例名字也显然分歧,所以这种笼盖和通俗体例的笼盖对比,无论年夜形式上仍是年夜执行体例上都有很年夜的区别。 |