Java教程

java中的内部类

本文主要是介绍java中的内部类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • 什么是内部类?
    在类的内部又定义一个类。
  • 内部类的分类?
    1.非静态内部类(实例内部类和局部内部类)
    非静态内部类是一个类中嵌套着另外一个类。 它有访问外部类成员的权限, 通常被称为内部类。由于内部类嵌套在外部类中,因此必须首先实例化外部类,然后创建内部类的对象来实现。内部类可以使用 private 或 protected 来修饰,如果你不希望内部类被外部类访问可以使用 private 修饰符。
    2.静态内部类
    静态内部类可以使用 static 关键字定义,静态内部类我们不需要创建外部类来访问,可以直接访问它。注意,静态内部类无法访问外部类成员。
  • 代码举例如下:
public class InterClass {
    public static void main(String[] args) {
        Test t = new Test();
//    创建实例内部类对象
        Test.Test01 t1 = t.new Test01();
        t1.display();
//        访问静态内部类
        Test.Test02 t2 = new Test.Test02();
        t2.display();
//        调用局部内部类对象
        t.doSome();
    }
}
class Test {
    int y = 20;

//    这是一个实例内部类
    class Test01 {
        int x = 10;
        public void display() {
            System.out.println("这是一个实例内部类");
//            可以访问外部类成员
            System.out.println(x + "+" + y + "=" + (x + y));
        }
    }

//    这是一个静态内部类
    static class Test02 {
        public void display() {
            System.out.println("这是一个静态内部类");
        }
    }

    public void doSome() {
//        这是一个局部内部类
        class Test03 {
            public void display() {
                System.out.println("这是一个局部内部类");
            }
        }
//        创建局部内部类对象
        Test03 t3 = new Test03();
        t3.display();
    }
}

  • 匿名内部类的用法
public class NoNameClass {
    public static void main(String[] args) {
//        使用匿名内部类
        MyMath myMath = new MyMath();
        myMath.mySum(new Computer() {
            public int sum(int x, int y) {
                return x + y;
            }
        },10,20);

    }
}
interface Computer {
    int sum(int x,int y);
}
class MyMath {
    public void mySum(Computer c,int a,int b) {
        int reValue = c.sum(a,b);
        System.out.println(a + "+" + b + "=" + reValue);
    }
}

详情见: [https://www.runoob.com/java/java-inner-class.html]

这篇关于java中的内部类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!