java 测试 内部类+匿名内部类

本文深入解析Java内部类的定义、使用及访问权限,通过实例演示内部类、内部类成员变量和方法的调用过程,同时介绍了匿名内部类的实现方式及其应用场景。

**

代码里面有详细解释:

  • 内部类以及内部类成员变量

**

类p1

//外部类
public class p1 {
//  外部类变量
    private  Integer num=100;

//  外部类方法
    public  void  method1(){
        System.out.println(" p1 method1");
    }

//  内部类
    public  class p1p1{
//      内部类变量
        private Integer num=10;
//      内部类方法
        public void method1(){
//          内部类局部变量
            Integer num=1;
            System.out.println("p1p1 method1");
//            直接输出的是局部变量
            System.out.println(num);
//            this.表示当前类
            System.out.println(this.num);
//            p1.this 是指定类的范围 ,此处表示为外部类的范围
            System.out.println(p1.this.num);
        }
    }
}

测试类:

public class test01 {

    public static void main(String[] args) {
        //普通的外部类不用解释了
        p1 p=new p1();
        System.out.println("p1:");
        p.method1();
        System.out.println("p1p1:");
        //格式: 类名.方法名 对象名=new 外部类名().new 内部类名();
        p1.p1p1 p1p1=new p1().new p1p1();
        p1p1.method1();
    }
}

运行结果:

p1:
p1 method1
p1p1:
p1p1 method1
1
10
100
Process finished with exit code 0

  • 匿名内部类:

这个要通过接口来说明

接口dog

public interface dog {
    void bark();
}

dog接口的Impl实现类

@Service
public class dogServiceImpl implements  dog {
    @Override
    public void bark() {
        System.out.println("ServiceImpl dog bark");
    }
}

最后来一个测试类:
(同样,解释在代码中)

public class test01 {

    public static void main(String[] args) {
        //new 一个匿名内部类
        //PS: 实际上是 new一个接口,并实现这个接口[就是实现这个接口的所有方法]
        dog d1=new dog() {
            @Override
            public void bark() {
               System.out.println("dog1 bark");
            }
        };

        d1.bark();

        //这个也是匿名内部类,但是连对象名字都丢弃了
        //因此可以在后边直接调用他的方法,但是只能调用一个方法,并且只能使用一次
        new dog() {
            @Override
            public void bark() {
                 System.out.println("无名 dog bark");
            }
        }.bark();

        //最后使用 dog的Impl实现类来调用一下  
        dogServiceImpl dImpl=new dogServiceImpl();

        //多态创建法
        dog dogservice=new dogServiceImpl();

        //结果应该是一样的,都是调用了Impl实现类的方法
        dImpl.bark();
        dogservice.bark();


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值