内部类
内部类分为: 成员内部类、静态嵌套类、匿名内部类(直接new 抽象类,直接new 接口)$1 $2。
如果是函数式接口,可以使用lambda表达,这样可以避免new 接口产生内部匿名类
-  内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号; 
-  内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的; 
-  外部类不能直接访问其内部类,想要访问内部类,需实例化内部类; 
-  内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量; 
-  其他类想要直接访问内部类,可直接实例化内部类,方法如下 外部类名.内部类 对象名 = new 外部类().new 内部类();
例:
Out.In in = new Out().new In();
如果内部类是静态的,当其他类调用内部类可直接通过类名调用,格式如下:
外部类.内部类 对象名 = new 外部类.内部类();
例:
Out.In in2 = new Out.In();
当内部类是静态的,且方法也是静态的,此时可不需实例化对象
外部类.内部类.静态方法名();
例:
Out.In.fun();
System.out.print();
Outter.java
/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;
/**
 * <p>Description:内部类</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/16 19:50 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class Outter {
    //成员 public 静态的内部类
    public static class out{
        public static void println(Object obj){
            System.out.println(obj);
        }
    }
    class Demo{
    }
    public static void main(String[] args) {
        out.println("hello world 中文效果");
        System.out.println("hello world 中文效果");
        //方法体,代码中,局部内容类
        //@Data
        class Book {
            private int id;
            private String name;
        }
    }
}

Test.java
/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;
/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/16 19:52 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class Test {
    public static void main(String[] args) {
        Outter.Demo demo = new Outter().new Demo();
        //System.out.println(demo);
        Outter.out.println(demo);
    }
}
Demo.java
/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;
/**
 * <p>Description:类  对象(实例对象)     new实例化对象(对象可以使用)</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/4/17 20:25 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class Demo {
    public static void main(String[] args) {
        //类  对象(实例对象)     new实例化对象(对象可以使用)
        User u = new User();
        Teacher t = new Teacher();
        User.Book book = new User(). new Book();
        //User.Book book1 = u.new Book();
    }
}




















