java内部类的使用

一、什么是内部类

定义:把类定义在其他类的内部,这个类被称为内部类(嵌套类)。
内部类的分类:成员内部类、静态内部类、局部内部类、匿名内部类。

二、成员内部类

书写格式:

class outer{
    class Inner{
        public void method(){
            System.out.println("hello world");
        }
    }
}

创建对象:
格式:外部类名.内部类名 成员内部类对象名 = 外部类对象.new 内部类构造函数();

public class Demo11_InterClass {
    public static void main(String[] args){
        outer.Inner oi = new outer().new Inner(); //创建内部类
    }
}

1.成员内部类可以直接访问其所在的外部类的非静态成员变量和静态的成员变量
2.外部类和内部类成员变量相同时: 获取的变量值采取的是就近原则
3.成员内部类的成员方法可以访问其所在的外部类的所有成员方法(不论是否公有,不论是否静态)

二、静态内部类

格式:

class outer{
    static class Inner{
        public void method(){
            System.out.println("hello world");
        }
    }
}

创建对象:
格式:外部类名.内部类名 成员内部类对象名 = 外部类对象.静态内部类构造函数();

1.静态内部类中不论是静态的成员方法,还是非静态的成员方法,只能访问其所在的外部类的静态成员变量
2.静态内部类中不论是静态的成员方法,还是非静态的成员方法,只能访问其所在的外部类的静态成员方法

三、局部内部类

格式:


// 外部类
class OuterClass12 { 
// 成员方法
public Object showByOuter() {
// 局部内部类
class InnerClass12 {
 
}
// 在外部类的成员方法中实例化局部内部类 
InnerClass12 innerClass12 = new InnerClass12();
	return innerClass12;
 
}
 

创建对象:
格式:只能通过其所在的外部类的成员方法返回在成员方法中创建出的局部内部类对象

OuterClass12 outerClass12 = new OuterClass12();
System.out.println(outerClass12.showByOuter());  

1.局部内部类中可以直接访问其所在的外部类的非静态的成员变量 和 静态的成员变量
2.局部内部类中可以直接访问其所在的外部类的非静态的成员方法 和 静态的成员方法

四、匿名内部类

格式:

interface inter{
    public abstract inter print();
}
class Outer2{
    class Inner5 implements inter{
        public inter print(){
            System.out.println("匿名内部类");
            return null;
        }
    } 
}

创建格式:
格式:通过调用匿名内部类所在的外部类的成员方法

1.匿名内部类没有构造函数,且使用者无法创建构造函数,但是实际上JDK为匿名内部类生成了构造函数
2.匿名内部类的成员方法中可以访问其所在的外部类的成员变量(不论是否公有私有,不论是否静态非静态),变量相同时也是就近原则

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝朽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值