請問Java程式變數的問題?

2016-02-13 4:50 am
請問Java的高手,底下的程式會顯示兩行結果,我不懂的是為何第二個結果是1: John而不是2: Mary?在class c的建構子中不是已經將兩變數都改變為第一個結果了嗎?

結果:
2: Mary
1: John



public interface I {
int i = 1;
String name = "John";
void show();
}





public class c implements I {
public c (){
int i = 2;
String name = "Mary";
System.out.println(i+": "+name);
}
@Override
public void show(){
System.out.println(i+": "+name);
}

public static void main(String[] args) {
int i = 3;
String name = "Alan";
c stud = new c();
stud.show();

}
}

回答 (1)

2016-02-13 10:59 am
因為stud.show存取不了 建構子中的i 和name 只能存取I.i 和I.name。是一個polymorphism的問題。
建構子中存取的i 和 name是本地變數。


收錄日期: 2021-04-18 14:26:36
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20160212205051AAsXzpv

檢視 Wayback Machine 備份