靜態變數 && 靜態方法 的 繼承
阿新 • • 發佈:2019-01-22
public class A {
static String a = "suppera";
static String b = "supperb";
public static void printA() {
System.out.println(a);
}
/*
public static void printB() {
System.out.println(b);
}*/
public static void main(String[] args) {
// B繼承自A的靜態方法,注意:B中雖然也定義了a的值(B.a),但是因為呼叫的printA是A中的方法,他列印的是A中的靜態變數a(A.a)的值
B.printA(); //[1]
// 如果B中沒有定義printB(),這裡呼叫的會是A中的printB(),但是因為B中也定義了B的printB(),所以這裡呼叫的是B自己的方法,所以
//列印的也是B中靜態變數b(B.b)的值
B.printB(); //[2]
// B也可以直接呼叫a,如果B中沒有重新定義,就呼叫繼承自A的a變數,重新定義了,就呼叫它自身的a
System.out.println(B.a);
}
}
class B extends A {
static String a = "suba";
static String b = "subb";
public static void printB() {
// 如果B中沒有重新定義b,這裡呼叫的會是A.b,重新定義之後,呼叫的就是B.b
System.out.println(b);
}
}
static String a = "suppera";
static String b = "supperb";
public static void printA() {
System.out.println(a);
}
/*
public static void printB() {
System.out.println(b);
}*/
public static void main(String[] args) {
// B繼承自A的靜態方法,注意:B中雖然也定義了a的值(B.a),但是因為呼叫的printA是A中的方法,他列印的是A中的靜態變數a(A.a)的值
B.printA(); //[1]
// 如果B中沒有定義printB(),這裡呼叫的會是A中的printB(),但是因為B中也定義了B的printB(),所以這裡呼叫的是B自己的方法,所以
//列印的也是B中靜態變數b(B.b)的值
B.printB(); //[2]
// B也可以直接呼叫a,如果B中沒有重新定義,就呼叫繼承自A的a變數,重新定義了,就呼叫它自身的a
System.out.println(B.a);
}
}
class B extends A {
static String a = "suba";
static String b = "subb";
public static void printB() {
// 如果B中沒有重新定義b,這裡呼叫的會是A.b,重新定義之後,呼叫的就是B.b
System.out.println(b);
}
}