簡體   English   中英

Android中的@Override注釋

[英]@Override annotation in Android

我是Java和Android編程的新手。 我遇到的問題是,在瀏覽了幾本書,論壇和網站之后,我對@override注釋的作用並不清楚。 我理解它意味着一個方法被過度使用。 但為什么在android中需要它。 我在java的源代碼中很少看到它,但在android中一直都是這樣。

您可能很少在舊的 Java源代碼中看到它,因為它是一個相當新的創新 - 而Android代碼更接近於定義。

這是一個安全網,真的 - 它告訴編譯器你正試圖覆蓋某些東西 - 所以如果方法沒有覆蓋任何東西,請失敗,例如由於名稱中的拼寫錯誤。 就像override是一個關鍵字一樣,它是C#中方法聲明的一部分。 它可以幫助您明確自己正在做的事情,這有助於防止錯誤,並使您的代碼更清晰地適應未來的讀者。

好吧,如果您了解@Override注釋的基本知識,那么它只是元數據信息,它有兩個目的:

  • 描述它被覆蓋的方法,因為它是在接口或擴展類中定義的

  • 幫助您正確識別哪些方法是本地聲明的,哪些是重寫的,因為在android中您可能會從Fragment,Activity,Services,BroadcastReceiver等擴展,這是一個很好的做法,可以使您的代碼更清晰。

至於你沒有看到它的Java風格的問題,它不僅是因為它是一個相當新的功能(不是自2005年以來的新功能),而是因為你沒有在java中覆蓋那么多的方法,至少在Swing中沒有或SWT,最常見的是你會在TableModel中找到它們,或者在擴展的HttpServlet類中它是Servlet

因為你覆蓋了很多方法,例如;當你創建你的Activity (擴展Activity )時,你需要覆蓋方法onCreate( Bundle savedInstanceState)來初始化你的Activity ,依此類推, 每次你從一個母類重寫一個方法,eclipse添加注釋 @override

@Override意味着您要從子類中的超類重新定義函數。 閱讀有關抽象方法,類,多態的更多信息。

我對Android編程幾乎一無所知,但@ Override-annotation用於表明該方法覆蓋了一個supeclass方法(或者在Java 1.6中實現了一個接口方法)。 除了注釋的純文檔含義之外,至少Eclipse還會警告您(或者根據您的設置將其標記為錯誤)如果該方法實際上不會覆蓋任何超類方法,那么當您認為它時(因此可以防止一些令人沮喪的錯誤) -狩獵)。 也許Android編譯器默認情況下需要使用@Override注釋所有重寫方法。

@overide類似於c ++中的虛方法,android中的Oncreate方法更像是wxWidget中的虛擬bool Oninit(),這個方法被android(Oncreate)用來構建你的GUI,因為GUI不同於編程的人Oncreate中的代碼也改變了,這就是為什么我們必須@overide它。 我們@overide庫使用的任何方法,我們想要自定義。 像Oninit()這樣的Oncreat()也是我們想要自定義的方法。

out_marginLeft="50dp"
            android:layout_marginTop="50dp"
            android:layout_marginRight="50dp"
            android:gravity="center"
            android:orientation="vertical">

            <ProgressBar
                android:id="@+id/progressBar"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/txtProgress"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp"
                android:progress="50"
                android:progressTint="@android:color/black" />

            <TextView
                android:id="@+id/txtProgress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:text="Progress"
                android:textColor="@android:color/black" />
        </LinearLayout>  

Java

java和android都不需要它。 你經常在android程序中看到它,因為當你創建一個新的活動,方法等時,eclipse會自動添加它。如果你刪除了@Override注釋,就不會有任何問題。

@override意味着您從可用類借用方法,並且不是由程序員定義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM