java学习之内部类

//外嵌类
public class Test{
    //内嵌类
    class Teacher{
        public void teach(){

        }
    }
    public static void main(){

    }
}

 

(1)外嵌类:自己内部定义了类的类

(2)内嵌类:在其他类中定义的类

 

类是由属性和行为构成,具体来说是成员变量方法

内部类相当于是外嵌类特殊的成员变量【注明2】

 

当内部类和外嵌类有重名成员,想要调用外嵌类的成员时,需要 外嵌类名.this.成员名

 

(1)内部类可以访问所在类的所有成员,即使该成员是private的。

(2)外嵌类不能直接访问内部类的所有成员,需要先创建内部类的对象,通过内部类的对象来访问

 

常见调用内部类方法的手段

public Teacher getTeacher(){      //创建一个返回内部类对象的函数
    return new Teacher();
}

在main函数中
(1)创建外嵌类的对象
(2)通过外嵌类对象调用上述方法
(3)通过上述方法调用需要的内部类对象

Test test = new Test();
test.getTeacher().teach();
//局部内部类:在函数内部创建的类
public void test(){
    class Student{

    }
}

局部内部类的对象 只能在该函数中使用

局部内部类前不能加访问限定符,如public

 

//匿名类:没有名字
//直接允许一个类的子类,用这个子类的类体创建一个子类的对象
Test test = new Test(){

}

在java中不常见,在javaScript中常见

类似于上转型对象,可以重写外嵌类的方法,调用是显示的是重写后的【注明1】

类似于上转型对象,test是外嵌类的方法,是不能够调用子类新增的方法,所以匿名类新增的方法,永远不会被调用

 

【注明1:局部变量前不能加访问限定符,否则报错】

【注明2:定义在一个类内部的类,叫作“嵌套类”。嵌套类分为两种:static的和非static的。后者又有一个专门的名字,叫作“内部类”。】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章