<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          阿里二面:main 方法可以繼承嗎?

          共 1412字,需瀏覽 3分鐘

           ·

          2021-12-27 17:43


          來源:網(wǎng)絡(luò)

          • main方法能重載么?
          • main方法能被其他方法調(diào)用么?
          • main方法可以繼承么?

          阿里二面:main 方法可以繼承嗎?

          昨天,微信群里一位網(wǎng)友,在群里發(fā)了自己面試阿里的過程。其中一個面試,他在群里 PUA 其他網(wǎng)友。這道面試題就是:Java 中的 main 方法可以繼承嗎?

          我們一開始學(xué)習(xí) Java 程序的時候,最先跑的一段代碼肯定是 main 方法,main 方法的格式如下:

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

          }

          那么 main 方法有什么特殊的地方呢?今天我們來簡單看一下。

          首先針對 main 方法的格式定義:

          「public」 :main 方法是啟動的時候由 JVM 進行加載的,public 的可訪問權(quán)限是最高的,所以需要聲明為 public;

          「static」 :方法的調(diào)用要么是通過對象,要么是通過類,而 main 方法的話因為是由虛擬機調(diào)用的,所以無需生成對象,那么聲明為 static 即可;

          「main」 :至于為什么方法名稱叫 main,我想應(yīng)該是參考的是 C 語言的方法名吧;

          「void」 :main 方法退出時,并沒有需要有相關(guān)返回值需要返回,所以是 void;

          「String[]」 :此字符串?dāng)?shù)組用來運行時接受用戶輸入的參數(shù);因為字符串在 Java 中是具有通用普遍性的,所以使用字符串是最優(yōu)選擇;數(shù)組的話,因為我們的參數(shù)不止一個,所以數(shù)組肯定是合適的;

          不過自 JDK1.5 引入動態(tài)參數(shù)后,String[]數(shù)組也可以使用String... args來實現(xiàn)。

          public?static?void?main(String...?args){

          }

          除了上面 JVM 規(guī)定的這個 main 方法比較特殊外,其他的 main 方法與普通的靜態(tài)方法是沒有什么不同的。

          main方法能重載么?

          這個是可以的,比如說我們給它重載一個方法:

          public?class?Main?{
          ????public?static?void?main(String?args)?{
          ????????System.out.println("hello?world:"?+?args);
          ????}

          ????public?static?void?main(String[]?args)?{
          ????????main("test");
          ????}
          }

          編譯運行,很顯然沒啥問題,除了 JVM 規(guī)定的作為應(yīng)用程序入口的 main 方法之外,其他的 main 方法都是比較普通的方法。

          main方法能被其他方法調(diào)用么?

          public?class?Main?{
          ????private?static?int?times?=?3;

          ????public?static?void?main2(String[]?args)?{
          ????????times--;
          ????????main(args);
          ????}

          ????public?static?void?main(String[]?args)?{
          ????????System.out.println("main方法執(zhí)行:"?+?times);
          ????????if?(times?<=?0)?{
          ????????????System.exit(0);
          ????????}
          ????????main2(args);
          ????}
          }

          運行一下代碼,可以發(fā)現(xiàn)代碼能正常執(zhí)行:

          main方法執(zhí)行:3
          main方法執(zhí)行:2
          main方法執(zhí)行:1
          main方法執(zhí)行:0

          所以說即使是作為應(yīng)用程序入口的 main 方法,也是可以被其他方法調(diào)用的,但要注意程序的關(guān)閉方式,別陷入死循環(huán)了。

          main方法可以繼承么?

          我們以前了解過,當(dāng)類繼承時,子類可以繼承父類的方法和變量,那么當(dāng)父類定義了 main 方法,而子類沒有 main 方法時,能繼承父類的 main 方法,從而正常的運行程序么?

          public?class?Main?{
          ????public?static?void?main(String[]?args)?{
          ????????System.out.println("hello?world");
          ????}
          }

          定義子類:

          public?class?Main2?extends?Main?{
          }

          這時候我們運行子類 Main2,可以發(fā)現(xiàn),同樣打印了hello world,這說明 main 方法也是可以繼承的。那么還有一種隱藏的情況也很顯然了,子類定義自己的 main 方法,隱藏掉父類中的實現(xiàn),那么這也是可以的。

          public?class?Main2?extends?Main?{
          ????public?static?void?main(String?[]?args)?{
          ????????System.out.println("hello?world?Main2");
          ????}
          }

          這時候就會打印子類自己的內(nèi)容了:hello world Main2。

          這么來看,除了main方法作為應(yīng)用程序的入口比較特殊外,其他情況下與正常的靜態(tài)方法是沒什么區(qū)別的。

          程序汪資料鏈接

          程序汪接的7個私活都在這里,經(jīng)驗整理

          Java項目分享 最新整理全集,找項目不累啦 06版

          堪稱神級的Spring Boot手冊,從基礎(chǔ)入門到實戰(zhàn)進階

          臥槽!字節(jié)跳動《算法中文手冊》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動總結(jié)的設(shè)計模式 PDF 火了,完整版開放下載!


          歡迎添加程序汪個人微信 itwang005? 進粉絲群或圍觀朋友圈

          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级片在线免费观看 | 五月天淫香淫色 | 91AV在线观看爱 | 午夜成人社区 | 男人的天堂色 |