java學習筆記#1-內部類/接口等概念

成員變量與局部變量:

具體定義不再贅述,記錄一些以前忽視的差異;

成員變量在聲明過程中會被系統默認初始化,默認值0;
局部變量在聲明過程中不會被系統默認初始化;
(final 修飾的為特殊情況,不會初始化)


局部變量和成員變量命名可以重復,當調用過程中沖突時,符合就近原則。(優先調用局部變量)

靜態變量、靜態方法:

靜態變量可以通過對象名直接訪問,也可以直接通過類名訪問。
非靜態類不能以此方式調用,需要聲明類后,通過類調用。

public class HelloWorld {

    static int staticInt = 99;
    public static void main(String[] args) {
        System.out.println(staticInt);
        System.out.println(HelloWorld.staticInt);
    }
}

與靜態變量一樣靜態方法可以通過類名直接調用,而不需要實例化類的對象。

弊端:
靜態方法是屬于類的,內存必須為它分配內存空間,這個空間一直由靜態方法占用,內存管理器不會由于靜態方法沒有被調用而將靜態方法的存儲空間收回,這樣如果將所有的方法都聲明為靜態方法,就會占用大量的內存空間。

關于內部類的概念:

靜態內部類:

靜態相關訪問非靜態內容都會受到限制,如靜態內部類不能直接訪問外部類的非靜態成員。同樣,靜態內容聲明較為直接,創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名= new 內部類();

方法內部類:

方法內部類就是內部類定義在外部類的方法中,方法內部類只在該方法的內部可見,即只在該方法內可以使用。

Object類:

ToString():

ToString()方法時Object類中的方法,因為所有的類默認繼承Object類,所以在將類作為字符串輸出時,都會默認調用ToString()方法,一般時將對象轉換為關于內存地址的哈希數。如果我們希望返回對象的屬性,則需要在對象中對ToString()方法進行重寫。

equals():

A.equals(B) 比較的是A,B兩個對象的引用是否指向同一個內存區域。
當然,該方法可以由IDE自動重寫。

多態:

引用的多態:

父類引用指向本類;
父類引用指向子類;

  Animal animal1 = new Animal();
  Animal animal2 = new Dog();
方法的多態:

本類方法的調用;
子類對父類方法的繼承、重寫等。

類型轉化:

        Animal animal ;
        Dog dog = (Dog)new Animal(); //強制類型轉化 animal->dog
        animal = dog;  //自動類型轉化dog ->animal
        Cat cat1 = (Cat) animal;  // 雖然不報錯,但是錯誤。  轉化關系相當于dog->cat

通過instanceof 關鍵字判斷是否包含,從而決定是否可以轉化。所以在使用強制轉化時,最好通過instanceof關鍵字判斷一下。

        if(animal instanceof Cat){
            System.out.printf("animal 對象含有 Cat 類");
        }

接口相關:

匿名內部類:

IPlayGame 為接口,接口中的方法只能聲明,無法做具體描述。所以在new對象的時候,需要將抽象方法具體化。

        IPlayGame iPlayGame = new IPlayGame() {
            @Override
            public void PlayGame() {
                System.out.printf("使用匿名內部類");
            }
        };
        iPlayGame.PlayGame();

        new IPlayGame(){
            @Override
            public void PlayGame() {
                System.out.println("使用匿名內部類2");
            }
        }.PlayGame();

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,690評論 0 11
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,374評論 11 349
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,143評論 0 62
  • 白衣 我愛看他側臉的姿勢 憑欄遠眺的似有哀愁 勝過他的背影 因他的背影被落葉淡化 因落葉的低飛猶如靜止 白衣的輪廓...
    羽林郎yll閱讀 195評論 0 1