複製鏈接
請複製以下鏈接發送給好友

靜態內部類

鎖定
Java語言允許在類中再定義類,這種在其它類內部定義的類就叫內部類。內部類又分為:常規內部類、局部內部類、匿名內部類和靜態嵌套類四種。
中文名
靜態內部類
定    義
用static定義
訪    問
只能訪問外部類的靜態成員
生    成
靜態內部類的對象可以直接生成

目錄

靜態內部類簡介

靜態內部類
靜態內部類定義在類中,任何方法外,用static定義。
靜態內部類只能訪問外部類的靜態成員
生成(new)一個靜態內部類不需要外部類成員:這是靜態內部類和成員內部類的區別。靜態內部類的對象可以直接生成:
Outer.Inner in=new Outer.Inner();
而不需要通過生成外部類對象來生成。這樣實際上使靜態內部類成為了一個頂級類。可以定義私有靜態內部類。

靜態內部類注意

當類與接口(或者是接口與接口)發生方法命名衝突的時候,此時必須使用內部類來實現。
用接口不能完全地實現多繼承,用接口配合內部類才能實現真正的多繼承。

靜態內部類舉例

對於兩個類,擁有相同的方法:
class People{
    run();
}
interface Machine{
    run();
}
此時有一個robot類:
class Robot extends People implement Machine.
//此時run()不可直接實現。
interface Machine{
    void run();
}
class Person{
    void run(){
        System.out.println("run");
    }
}
class Robot extends Person{
private class MachineHeart implements Machine{
    public void run(){
        System.out.println("heart run");
    }
}
public void run(){
    System.out.println("Robot run");
}
Machine.getMachine(){
    return    new MachineHeart();
}
class Test{
    publicstaticvoid main(String[] args){
        Robot robot=new Robot();
        Machine m=robot.getMachine();
        m.run();
        robot.run();
    }
}