内部类介绍
具体情况搜索CSDN
关键字:内部类
视频时间 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();
}
}