自学内容网 自学内容网

Java: 内部类

一 内部类的概念

在Java中,可以将一个定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类,也是封装的一种体现。

外部类相当于火车,内部类相当于火车的一小节。

二 内部类的分类

1.静态内部类

静态内部类可以看作是外部类的一个静态成员。它不依赖外部类的实例,可以直接创建,不需要先创建外部类的对象。

class Outclass{
    public int date1=1;
    private int date2=2;
    public static int date3=3;

    //静态内部类
    static class InnerClass{
        public int date4=4;
        private int date5=5;
        public static int date6=6;
    public void test() {
        Outclass outclass = new Outclass();
        System.out.println(outclass.date1);
        System.out.println(date3);
        System.out.println(date4);
        System.out.println(date4);
        System.out.println(date5);
        System.out.println(date6);
        System.out.println(date5);
    }
    }
}

class Outclass2{
    public int date1=1;
    private int date2=2;
    public static int date3=3;
特点:
  • 静态内部类只能访问外部类的静态成员。
  • 可以直接创建,不需要依赖外部类的实例。

2.成员内部类

成员内部类是定义在另一个类中的普通类。成员内部类的对象必须通过外部类的对象来创建,因为它需要访问外部类的实例,未被static修饰。

class Outclass2{
    public int date1=1;
    private int date2=2;
    public static int date3=3;

    //内部类
     class InnerClass2{
        public int date4=4;
        private int date5=5;
        public static int date6=6;
        private int date1;

        public void test() {
            Outclass outclass = new Outclass();
            System.out.println(Outclass2.this.date1);
            System.out.println(this.date1);
            System.out.println(date4);
            System.out.println(date4);
            System.out.println(date5);
            System.out.println(date6);
            System.out.println(date5);
        }
    }
}

3. 局部内部类

局部内部类是定义在方法或代码块中的类,它的作用域仅限于该方法或代码块。 

class Outer {
    void outerMethod() {
        // 局部内部类
        class LocalInner {
            void display() {
                System.out.println("Inside");
            }
        }
        LocalInner localInner = new LocalInner();
        localInner.display();
    }
}

public class Main {
    public static void main(String[] args) {
        Outer outer = new Outer();
        outer.outerMethod();  // 输出: Inside LocalInner class
    }
}

4. 匿名内部类

匿名内部类是没有名字的内部类,通常用于实现接口或继承抽象类,并且实例只使用一次。

abstract class Animal {
    abstract void sound();
}

public class Main {
    public static void main(String[] args) {
        // 创建匿名内部类,继承自抽象类 Animal
        Animal myAnimal = new Animal() {
            void sound() {
                System.out.println("sound");
            }
        };
        myAnimal.sound();
    }
}

希望能对大家有所帮助!!!!!

 

 

 


原文地址:https://blog.csdn.net/blamep/article/details/142335832

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!