JavaBasic-成员内部类-匿名内部类

博客主要介绍了成员内部类和匿名内部类。成员内部类定义在类的成员位置,内外类可互访私有成员,有独立 class 文件。匿名内部类无特定类名,编写在方法中,需继承类或接口,对局部变量访问有要求。
一. 成员内部类

在类的成员位置 , 定义的内部类 。
在使用时 , 类中将其看做一个成员

1.1) outer 中的私有成员 inner 中能使用
inner 中的私有成员 outer 中也能使用

1.2) 一般情况下, inner 的对象只会在 outer 中使用

1.3) 如果 inner 中有属性和 outer 重名
this.<属性>-----inner 的属性
<outer类名>.this.<属性>-------outer 的属性
1.4) 任何内部类都会有自己独立的 class 文件
1.5) 实际上 inner 可以在其他类中实例化但是了解即可

代码块:
主类 InnerDemo.java
public class InnerDemo {

    public static void main(String[] args) {
        Aoo.Boo aoo = new Aoo().new Boo();
    }
    
}


子类 Aoo 和 Boo
class Aoo {
    private int a;
    int b;

    //成员内部类
    class Boo {
        int b;
        private int c;
        int d;

        public void method01() {
            Aoo.this.a = 1;//Aoo.a
            this.b = 2;//Boo.b
            Aoo.this.b = 12;//Aoo.b
            c = 4;
            d = 5;
        }
    }

    public void method02() {
        Boo boo = new Boo();
        boo.c = 10;
        boo.d = 15;
    }
}
二. 匿名内部类

匿名内部类是一种特殊的内部类

匿名内部类是一种特殊的内部类
2.1) 匿名内部类没有特定的类名
2.2) 匿名内部类编写在一个方法中
2.3) 匿名内部类必须选择一个类或接口继承
2.4) 语法
<父类名> <引用> = new <父类名> ( ) {
//匿名内部类内容
} ;
2.5) 匿名内部类中
只能对方法中的局部变量访问
但是不能修改
jdk1.6 之前
要求匿名内部类中使用的局部变量
必须用 final 修饰

代码块:
主类 AnonymousInnerDemo.java
public class AnonymousInnerDemo {

    public static void main(String[] args) {
        Person p = new Person() {
            String name = "二毛";
            int age = 18;
            @Override
            public void eat() {
                System.out.println("我是小哥哥, 名字叫: " +this.name +", 年龄是: " +this.age);
            }
        };
        p.eat();
    }
}

abstract class Person{
    public abstract void eat();
}
Print Result:
我是小哥哥, 名字叫: 二毛, 年龄是: 18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值