java繼承時(shí)能包括靜態(tài)的變量和方法嗎
子類繼承了超類定義的所有實(shí)例變量和方法包括靜態(tài)的變量和方法(馬克-to-win見下例),并且為它自己增添了獨(dú)特的元素。子類只能有一個(gè)超類。Java不支持多超類的繼承。
子類擁有超類的所有成員,但它不能直接訪問超類中被聲明成private的成員。馬克-to-win:兒子能拿父親保險(xiǎn)箱中的東西嗎?為什么要放保險(xiǎn)箱?
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
class A1Mark {
static int si=5;//靜態(tài)的屬性和方法一樣屬于子類,用子類或父類類名都可以調(diào)用靜態(tài)變量或方法
int i; // 同一個(gè)包內(nèi),public by default
private int j; // private to A
int getJ() {
return j;
}
static int getSi(){
return si;
}
void setij(int x, int y) {
i = x;
j = y;
}
}
// A1Mark's j is not accessible here.
class B1 extends A1Mark {
static int sbi=6;//子類可以正常有靜態(tài)變量
int total;
void sum() {
// total = i + j; // ERROR, j is not accessible here
total = i + si+getJ()+getSi(); // no problem , i can be used here.
}
/*子類的靜態(tài)方法甚至可以覆蓋父類的靜態(tài)方法。*/
static int getSi(){
return si*10;
}
}
public class Test {
public static void main(String args[]) {
B1 subOb = new B1();
subOb.setij(10, 12);//可以直接用基類的方法
System.out.println(subOb.i+" "+B1.sbi+" "+subOb.si+" "+subOb.getSi()+" "+B1.si+" "+B1.getSi()+" "+A1Mark.si+" "+A1Mark.getSi());
subOb.sum();
System.out.println("Total is " + subOb.total);
}
}
result is:
10 6 5 50 5 50 5 5
Total is 77