关于Java内部类的详解

**内部类**

内部类就是将一个类定义在另外一个类的内部,分为成员内部类(定义在外部类的成员位置)和局部外部类(定义在外部类的方法里)

1.成员内部类
成员内部类可以直接访问外部类的所有成员类型,在程序中可通过外部类.this.成员名来调用外部成员。外部类访问非静态内部类的成员,必须要创建成员内部类对象;外部类可通过类名直接访问静态内部类的静态成员,包括私有。要注意成员内部类与外部类不存在继承。
其他类中生成成员内部类的方式:Outer.Inner oi = new Outer().new Inner();


2.局部内部类
局部内部类可直接访问外部类的成员。在局部位置可以创建局部内部类对象,然后通过对象调用成员。需要注意当局部内部类访问局部变量时,被访问的变量必须用final修饰,因为局部变量随着方法调用后就不存在了,二内部类在堆内存中不会立即消失。

3。匿名内部类
所谓匿名内部类就是不清楚这个类叫什么名字。匿名内部类通常用于那些只需使用一次的类。
*匿名内部类的创建:*

***.new 类名(参数) | 实现接口()
{
// 匿名内部类的类体部分
}***
从上面的定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或者实现一个接口。
两个规则:
    匿名内部类不能是抽象类。
    匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以初始化块,可以通过初始化块来完成构造器需要完成的工作。

*匿名内部类的实现与使用*
//定义一个匿名类要实现的接口
***public interface Product{
 double getNum();
 double getName();***
 //定义一个实体类,实体类定义一个方法,方法的参数为上面的接口对象,之后再接口中传入匿名类对象,这个匿名类便实现了此接口
 ***public class Student{
    public void test(Product product){
    System.out.println("学号为"+product.getNum()+",名字为"+product.getName());
    }
}***

在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值