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

          共 3631字,需瀏覽 8分鐘

           ·

          2022-01-09 22:26

          前沿技術(shù)早知道,彎道超車有希望

          積累超車資本,從關(guān)注DD開始

          昨天,微信群里一位網(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ù)組肯定是合適的;如果您正在學(xué)習(xí)Spring Boot,那么推薦一個連載多年還在繼續(xù)更新的免費教程:http://blog.didispace.com/spring-boot-learning-2x/

          不過自 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)了。與優(yōu)秀的人在一起,自己也會優(yōu)秀起來,趕緊點擊加群,享受一起成長的快樂

          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ū)別的。

            來源:網(wǎng)絡(luò),  圖文編輯:xj



          往期推薦



          西安一碼通到底是通過后端下發(fā)圖片的嗎?

          Logback 配置文件這樣優(yōu)化,TPS提高 10 倍

          難道這就是“西安一碼通”再次崩潰的真實原因?

          用Spring Cloud Alibaba開發(fā)微服務(wù)會更香嗎?

          推薦一本GitHub上斬獲 11k+ Star 的開源書


          與優(yōu)秀的人在一起,自己也會優(yōu)秀起來

          關(guān)注我,回復(fù)“加群”,加入我們一起成長

          點擊閱讀原文,送你DD原創(chuàng)的免費Spring Boot教程!
          瀏覽 23
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  欧美性爱A | 欧美风情在线 | 在线女人天堂网 | 人人看人人摸 | 91AV电影网 |