亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于靜態方法跟main()方法的繼承跟重寫問題?求大神解惑!

靜態方法和main()方法能繼承和重寫嗎?看到問答區中有人說不能,但是自己上eclipse嘗試的時候好像是可以的,可以看看下面的代碼!

//父類A

package com.shiyan2;


public class A {

? ? ?public static void print(){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //想要被繼承的靜態方法

? ? System.out.println("執行了A類的pring方法!");

? ? ?}

? ? ?

? ? ?public static void main(String[] args) { ? ? ? ? ? ? ?//想要被繼承的main()方法

for(int i=0;i<args.length;i++){

System.out.println(args[i]);

}

System.out.println("調用了A類的main方法");

}

}

//子類B

package com.shiyan2;


public class B extends A {

? ? ? ?/*public static void print(){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//對print方法的重寫

? ? ? System.out.println("父類中print方法的重寫");

? ? ? ?}*/

? ? ? ?

? ? ? /* public static void main(String[] args) { ? ? ? ? ? //對main()方法的重寫

? ? for(int i=0;i<args.length;i++){

? ? System.out.println(args[i]);

? ? }

? ? System.out.println("調用了重寫后的A類的main方法");

? ? }*/

}

//測試類

package com.shiyan2;


public class Initial { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ?public static void main(String[] args) { ? ? ? ? ?

B b=new B(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//實例化的是子類的對象

String str[]={"1","2","3","4"};

b.main(str); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//對main()方法的調用

b.print(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//對print的調用

}

}

??//然后這個格式也很奇怪啊,main中還有main?,一個程序不是只能一個主路口嗎?



正在回答

4 回答

第一 你子B類的main方法并不是繼承的A類的main方法 而是自己的main方法 所以也不存在重寫的問題

第二 測試類中的入口就是測試類中的main方法, 你在方法中調用別的類的重名方法不是很正常的事嗎 ?不存在兩個入口的問題,


0 回復 有任何疑惑可以回復我~
#1

wswzh0329 提問者

。。那么只是main()這個靜態方法比較特殊,就算是(相同的訪問修飾符、方法名、返回值、參數類型跟參數個數)也不算是繼承,從而沒有重寫這一說;還是所有的靜態方法都沒有繼承這一說?
2015-10-06 回復 有任何疑惑可以回復我~
#2

wswzh0329 提問者

非常感謝!
2015-10-18 回復 有任何疑惑可以回復我~

靜態方法能夠被繼承,但是不能被重寫,存在一模一樣的靜態方法只能說是把父類的方法給隱藏了,并不是被重寫?。?/p>

0 回復 有任何疑惑可以回復我~
#1

天啟之魂

隱藏?怎么個隱藏法?如果一個類中存在兩個完全相同的方法 那么調用時就會產生不確定性,java中不會出現這種情況
2015-10-18 回復 有任何疑惑可以回復我~
#2

天啟之魂

所以你所謂的隱藏 實際就是重寫.....
2015-10-18 回復 有任何疑惑可以回復我~
#3

wswzh0329 提問者 回復 天啟之魂

。。最近看了《細說java》,隱藏跟重寫并不一樣,重寫有多態性,隱藏并沒有!
2015-10-18 回復 有任何疑惑可以回復我~
#4

wswzh0329 提問者 回復 天啟之魂

。。當然,對于普通方法而言,并沒有隱藏這一說,隱藏在繼承中只是體現在屬性和靜態方法、內部類的身上
2015-10-18 回復 有任何疑惑可以回復我~
#5

天啟之魂 回復 wswzh0329 提問者

嗦嘎 那是我弄錯了 不過確實沒接觸過這個概念
2015-10-18 回復 有任何疑惑可以回復我~
查看2條回復

我說錯了 靜態函數只能被靜態函數覆蓋,也就是重寫!

0 回復 有任何疑惑可以回復我~

靜態函數只能被靜態函數繼承

0 回復 有任何疑惑可以回復我~
#1

wswzh0329 提問者

..還是沒明白。。繼承不是類跟類之間的關系嗎,被靜態函數繼承是什么意思? 我在eclipse上面試了,父類中有一個普通方法print和一個靜態方法print2, 子類中什么都沒寫; 然后在測試類中創建了子類的對象,子類的對象能夠調用print和print2,這是不是說明靜態方法也能被繼承?
2015-10-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531144    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

關于靜態方法跟main()方法的繼承跟重寫問題?求大神解惑!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號