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的。后者又有一个专门的名字,叫作“内部类”。】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书文的学习记录本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值