Java-内部类

本文详细介绍了Java中的外部类、非静态内部类、静态内部类、匿名内部类和局部内部类的概念,以及如何在实际编程中创建和使用这些内部类,通过实例演示了它们的特性和应用场景。
摘要由CSDN通过智能技术生成

 

package com.it.innerClass;

public class Outer1 {
    private int age = 18;
    public void show() {
        System.out.println("outer外部类的age:"+age);
    }
//    内部类,定义在外部类Outer1里面
//    非静态内部类不能有静态的方法、静态的属性、静态初始化块
    public class Inner1 {
        private int id = 1001;
        private int age = 29;
        public void test1() {
            System.out.println("Inner1.test1");
            System.out.println("Inner1的id:"+id);
            System.out.println("Outer1的age:"+Outer1.this.age);//访问外部类的属性
            Outer1.this.show();
        }
    }
}
package com.it.innerClass;

public class TestInnerClass1 {
    public static void main(String[] args) {
//        非静态内部类的对象,必须寄存在外部类的对象里
//        先创建一个外部类对象,再用外部类对象创建内部类对象
        Outer1.Inner1 i = new Outer1().new Inner1();
        i.test1();
    }
}

 

 

package com.it.innerClass;

import org.w3c.dom.ls.LSOutput;

/**
 * 测试静态内部类
 */
public class Outer2 {
    private int a = 1;
    private static int b =2;
    static class Inner2 {
        public void test() {
//            System.out.println(a);//静态内部类不可以访问外部类的非静态属性/方法
            System.out.println(b);//静态内部类可以访问外部类的静态属性/方法
        }
    }
}
package com.it.innerClass;

/**
 * 测试调用静态内部类
 */
public class TestStaticInnerClass {
    public static void main(String[] args) {
//        通过new 外部类名.内部类名()的方法来创建内部类对象
        Outer2.Inner2 inner2 = new Outer2.Inner2();
        inner2.test();
    }
}

 

 

 

package com.it.innerClass;

/**
 * 测试匿名内部类
 */
public class TestAnonymousInnerClass {
    public void testA(A3 a) {
        a.run();
    }
    public static void main(String[] args) {
        TestAnonymousInnerClass tc = new TestAnonymousInnerClass();
//        匿名内部类只使用一次
        tc.testA(new A3() {
            @Override
            public void run() {
                System.out.println("TestAnonymousInnerClass.run");
            }
        });
    }
}
//class TestA3 implements A3 {
//
//    @Override
//    public void run() {
//        System.out.println("TestA3.run");
//    }
//}
interface A3 {
    void run();
}

 

package com.it.innerClass;

/**
 * 测试局部内部类
 */
public class TestLocalInnerClass {
    public static void main(String[] args) {
        new TestLocalInnerClass().show();
    }
    void show() {
//        局部内部类,作用域仅限于该方法
        class Inner3 {
            public void run() {
                System.out.println("Inner3.run");
            }
        }
        new Inner3().run();
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值