JAVASE 學習筆記 內部類

2021-08-09 17:50:47 字數 2129 閱讀 8045

內部類:在乙個類的內部定義另外乙個類,另外乙個類稱為內部類

內部類的class檔名:外部類$內部類.class

內部類的型別:成員內部類:在外部類的成員位置

區域性內部類:在外部類的區域性位置

內部類的好處:可以直接訪問外部類的所有成員

應用場景:在描述a事物時,a事物內部還維護了另外乙個b事物,且b事物必須要訪問到a事物的成員,這時可以用內部類來描述b事物

訪問方式:

方式一:在外部類提供乙個方法建立內部類的物件進行訪問

方式二:在其他類中直接建立內部類的物件進行訪問

outer.inner inner=new outer().new inner();

格式:外部類.內部類 變數名=new 外部類().new  內部類();

舉例:

//測試類

public

class demo1

}//外部類

class outer

}//外部類提供乙個方法建立內部類的物件進行訪問

public

void

usemethod()

}

注意:

1.內部類可以訪問外部類的所有成員(包括私有)

2.內部類與外部類存在同名成員時,在內部類中預設是訪問內部類的成員,可以通過「外部類.this.成員」進行指定訪問外部類的成員

3.私有的成員內部類只能通過在外部提供乙個公共的方法進行訪問,在其他類無法訪問(private只是為了資料安全)

4.如果乙個成員內部類定義了靜態的成員,則該類也必須使用static修飾,靜態成員內部類只能訪問外部類的static成員變數

因為:靜態成員變數是不依賴物件而存在的

靜態成員內部類在其他類建立物件的格式:

外部類.內部類 變數名=new 外部類.內部類();

舉例:

//測試類

public

class demo2

}//外部類

class outer2

}//成員內部類定義了靜態的成員,該類也必須用static修飾

static class inner2

}//私有的成員內部類只能用外部類的方法進行訪問

public

void

method()

}

如果區域性內部類要訪問區域性變數,則區域性變數必須用final修飾(jdk1.8不會報錯——封裝好了)

舉例:

//測試類

public

class demo3

}//外部類

class outer3

}//區域性內部類可以在外部類的區域性方法內,區域性內部類外建立內部類的物件訪問內部類的方法

inner i=new inner();

i.getparm();

}}

沒有類名的內部類

使用前提:必須存在繼承或者實現關係

舉例:

//測試類

public

class demo4

}//抽象類

abstract class animal

//介面

inte***ce hibernation

class outer4

}.eat();//貓吃魚

//當介面中有多個方法時,運用多型可以呼叫多個方法

hibernation h=new hibernation()

public

void

sleep()

};h.hibernation();//有些動物會冬眠

h.sleep();//有些動物會進行深層睡眠

}}

JavaSE學習筆記 內部類

一,什麼是內部類?將類定義在類中,該類就是類部類.二,訪問許可權.內部類可以直接訪問外部類中的成員。外部類想要訪問內部類,需要建立內部類物件。三,什麼時候使用內部類。有a類和b類,當a類想要直接訪問b類中的成員,而b類又需要建立a類的物件來訪問a類中的成員。這時,就將a類定義成b類的內部類。例子 孫...

JavaSE基礎學筆記 內部類

內部類的應用場景 當描述事物時,事物的內部還有事物,並且這個內部事物要使用外部事物的某些特性,這時把內部事物定義成內部類。內部類與其外部類的訪問規則 1.內部類可以直接訪問外部類的成員。2.外部類要訪問內部類要建立內部類物件。3.內部類可以被private修飾,因為內部類是在其外部類的成員位置上。注...

JavaSE基礎08內部類

在乙個類中定義乙個類,那麼把這種情況稱為內部類。內部類可以訪問外部類的成員,即使外部類用private修飾 私有 外部類想要訪問內部類成員,必須同通過建立內部類物件來訪問內部類的成員。package org.zst.inter class outer1 public void show public...