匿名内部类的使用

public class Outer3 {

// 局部内部类 --仅存在于方法中
public void method(){

    final String gender = "男";

// 局部内部类 在结构上仍旧是一个普通的类 --该有的都有
class Student{
String name;
int age;

        public void eat(){
            System.out.println("正在吃");
            System.out.println(gender); // 局部内部类中可以使用方法中的变量, 最好将这个变量变成final的

// gender = “重新赋值”;
}

        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

// gender = “女”;
// Student student = new Student(“张三”, 88);
// student.eat();
}

public static void main(String[] args) {
    class AI implements A{
        @Override
        public int getNum(int range) {
            return new Random().nextInt(range);
        }
    }

    A a = new AI();
    System.out.println(a.getNum(30));
    A a1 = new AI();
    System.out.println(a1.getNum(30));

    class AIm implements A{
        @Override
        public int getNum(int range) {
            return new Random().nextInt(range - 10) + 5;
        }
    }

    A a2 = new AIm();
    System.out.println(a2.getNum(30));

// 匿名内部类 – 没有类名的类 实际上就是局部内部类的一种简化形式
A a3 = new A() {
@Override
public int getNum(int range) {
return 0;
}
};
// 匿名内部类 – 都是父类/接口类型
B b = new B() {
@Override
public void m() {
System.out.println(“B’s m~”);
}

        @Override
        public void m1() {
            System.out.println("重写的m1");
        }
    }; // 是一个没有名字的B的子类

    C c = new C() {
        @Override
        public void me() {
            System.out.println("456");
        }
    };

    c.me();

    new C(){
        @Override
        public void me() {
            System.out.println("dfghjkl");
        }
    }.me();

// 匿名内部类 : 实际上就是一个没有名字的实现类/子类
}
}

interface A {
int getNum(int range);
}

abstract class B {
public abstract void m();

public void m1(){
    System.out.println("abstract");
}

}

class C {
public void me(){
System.out.println(“me”);
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值