<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 方法可以繼承嗎?

          共 1471字,需瀏覽 3分鐘

           ·

          2021-12-28 18:06

          點(diǎn)擊上方“碼農(nóng)突圍”,馬上關(guān)注

          這里是碼農(nóng)充電第一站,回復(fù)“666”,獲取一份專(zhuān)屬大禮包

          真愛(ài),請(qǐng)?jiān)O(shè)置“星標(biāo)”或點(diǎn)個(gè)“在看


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

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

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

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

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

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

          }

          那么 main 方法有什么特殊的地方呢?今天我們來(lái)簡(jiǎn)單看一下。

          首先針對(duì) main 方法的格式定義:

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

          「static」 :方法的調(diào)用要么是通過(guò)對(duì)象,要么是通過(guò)類(lèi),而 main 方法的話因?yàn)槭怯商摂M機(jī)調(diào)用的,所以無(wú)需生成對(duì)象,那么聲明為 static 即可;

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

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

          「String[]」 :此字符串?dāng)?shù)組用來(lái)運(yùn)行時(shí)接受用戶(hù)輸入的參數(shù);因?yàn)樽址?Java 中是具有通用普遍性的,所以使用字符串是最優(yōu)選擇;數(shù)組的話,因?yàn)槲覀兊膮?shù)不止一個(gè),所以數(shù)組肯定是合適的;

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

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

          }

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

          main方法能重載么?

          這個(gè)是可以的,比如說(shuō)我們給它重載一個(gè)方法:

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

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

          編譯運(yùn)行,很顯然沒(méi)啥問(wèn)題,除了 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);
          ????}
          }

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

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

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

          main方法可以繼承么?

          我們以前了解過(guò),當(dāng)類(lèi)繼承時(shí),子類(lèi)可以繼承父類(lèi)的方法和變量,那么當(dāng)父類(lèi)定義了 main 方法,而子類(lèi)沒(méi)有 main 方法時(shí),能繼承父類(lèi)的 main 方法,從而正常的運(yùn)行程序么?

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

          定義子類(lèi):

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

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

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

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

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

          -End-

          最近有一些小伙伴,讓我?guī)兔φ乙恍?面試題?資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來(lái),可以說(shuō)是程序員面試必備!所有資料都整理到網(wǎng)盤(pán)了,歡迎下載!

          點(diǎn)擊??卡片,關(guān)注后回復(fù)【面試題】即可獲取

          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  亚洲色情电影视频 | 天天摸天天日 | 成人伊人观看视频 | 好吊妞视频在线观看 | 干日本熟女|