Java: conocer las clases internas

Introducción a la clase interna

inserte la descripción de la imagen aquíBusque palabras clave CSDN
para situaciones específicas: tiempo de video de clase interna
2022-02-22

TestDemo.java

/**
 * Created with IntelliJ IDEA.
 * User: 12629
 * Date: 2022/2/22
 * Time: 18:36
 * Description:
 */
interface A {
    
    

}
class OuterClass {
    
    
    public int data1 = 1;
    private int data2 = 2;
    public static int data3 = 3;
    //实例内部类:你可以把他当做 是外部类的一个普通实例的成员
    class InnerClass {
    
    
        public int data1 = 999999;
        public int data4 = 4;
        private int data5 = 5;
        public static final int data6 = 6;
        public InnerClass() {
    
    
            System.out.println("不带参数的内部类的构造方法!");
        }
        public void test() {
    
    
            System.out.println(OuterClass.this.data1);
            System.out.println(this.data1);
            System.out.println(data2);
            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);
            System.out.println("InnerClass::test()");
        }
    }

    public void func1() {
    
    
        //static int a = 10; 属于类的  不属于对象的
        System.out.println("OuterClass::func1()");
    }
}


//
class MyLinkedList {
    
    
    class Node {
    
    

    }
}

public class TestDemo extends OuterClass.InnerClass {
    
    

    public TestDemo(OuterClass out) {
    
    
        out.super();
    }

    /*public void func() {
        class Test {
            public int a;
        }
        //缺点:只能在当前方法当中使用
    }*/

    public static void main(String[] args) {
    
    
        OuterClass outerClass = new OuterClass();
//        outerClass.func1();
        OuterClass.InnerClass innerClass = outerClass.new InnerClass();
        innerClass.test();
    }
}

TestDemo2.java

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * Created with IntelliJ IDEA.
 * User: 12629
 * Date: 2022/2/22
 * Time: 19:21
 * Description:
 */
class OuterClass2 {
    
    
    public int data1 = 1;
    private int data2 = 2;
    public static int data3 = 3;
    //静态内部类:
    static class InnerClass {
    
    
        public int data4 = 4;
        private int data5 = 5;
        public static int data6 = 6;

        public static OuterClass2 out2 = new OuterClass2();

        public OuterClass2 out;
        public InnerClass(OuterClass2 out) {
    
    
            this.out = out;
        }

        public InnerClass() {
    
    

        }

        public void test() {
    
    
            System.out.println(out.data1);
            //System.out.println(out.data2);
            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);
            System.out.println("InnerClass::test()");
        }
    }
}
class Test {
    
    
    public void test() {
    
    
        System.out.println("test()haha!");
    }
}

public class TestDemo2 {
    
    
    public static void main(String[] args) {
    
    
        new Test(){
    
    
            @Override
            public void test() {
    
    
                System.out.println("我是重写的test方法");
            }
        }.test();

        PriorityQueue<Integer> prio = new PriorityQueue<>(new Comparator<Integer>() {
    
    
            @Override
            public int compare(Integer o1, Integer o2) {
    
    
                return 0;
            }
        });

    }
    public static void main2(String[] args) {
    
    
        OuterClass2.InnerClass innerClass = new OuterClass2.InnerClass();

    }
    public static void main1(String[] args) {
    
    
        OuterClass2 o = new OuterClass2();
        OuterClass2.InnerClass innerClass = new OuterClass2.InnerClass(o);
        innerClass.test();

    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_43398758/article/details/123546995
Recomendado
Clasificación