• java 内部类


    /**
     * 
     * @ClassName: Demo
     * @Description: 静态内部类中可以有静态的或非静态的成员,而非静态内部类中只能有非静态的成员;
     *               静态内部类中的方法只能访问外部类中的静态属性,而非静态内部类中的方法可以访问外部类中的静态的或非静态的属性;
     *               内部类访问外部类的属性格式: 外部类名.this.非静态属性名 外部类名.this.静态成员名(非静态内部类中才可以使用)
     *               外部类名.静态属性名 外部类访问静态内部类格式: 内部类名.静态成员名 外部类访问内部类格式: new
     *               外部类名.内部类名().内部类成员名 或new 内部类名().内部类成员名
     * @author wangzhu
     * @date 2012-10-9 上午10:45:14
     * 
     */
    public class Demo {
        protected static int numa = 1;
        private int numb = 2;
    
        private static class A {
    
            int numA = 11;
            static int numAA = 22;
    
            static void showA() {
                System.out.println(numa + "" + Demo.numa + " " + numAA);
            }
    
            void show() {
                System.out
                        .println(numa + " " + Demo.numa + "" + numA + " " + numAA);
            }
        }
    
        private class B {
            int numB = 111;
    
            void showB() {
                System.out.println(numa + " " + numb + "" + Demo.numa + ""
                        + Demo.this.numa + " " + Demo.this.numb + " " + " " + numB);
            }
        }
    
        public void showDemo() {
            System.out.println(numa + " " + numb);
            System.out.println(Demo.A.numAA + " " + A.numAA);
            A.showA();
            Demo.A.showA();
    
            Demo.A demoA = new Demo.A();
            Demo.B demoB = new Demo.B();
            A a = new A();
            B b = new B();
    
            System.out.println(demoA.numA + " " + demoA.numAA);
            demoA.show();
            demoA.showA();
            System.out.println(demoB.numB);
            demoB.showB();
    
            System.out.println(a.numA + " " + a.numAA);
            a.show();
            a.showA();
            b.showB();
            System.out.println(b.numB);
    
            a = new Demo.A();
            demoA = new A();
            System.out.println(a.numA + " " + a.numAA);
            a.show();
            a.showA();
    
            System.out.println(demoA.numA + " " + demoA.numAA);
            demoA.show();
            demoA.showA();
    
            b = new Demo.B();
            demoB = new B();
            System.out.println(b.numB + " " + demoB.numB);
            b.showB();
            demoB.showB();
        }
    
        public static void main(String[] args) {
            new Demo().showDemo();
        }
    
        // 1 2
        // 22 22
        // 11 22
        // 11 22
        // 11 22
        // 1 111 22
        // 11 22
        // 111
        // 1 211 2 111
        // 11 22
        // 1 111 22
        // 11 22
        // 1 211 2 111
        // 111
        // 11 22
        // 1 111 22
        // 11 22
        // 11 22
        // 1 111 22
        // 11 22
        // 111 111
        // 1 211 2 111
        // 1 211 2 111
    
    }
  • 相关阅读:
    C# linq lambda 分组获取最新的数据
    C# SQLite datetime 时间比较查询
    .net core webApi 上传附件
    ①、Vue学习
    阿里云单片上传、断点续传,上传到指定文件夹下面
    php设计模式之策略模式
    composer安装laravel
    php全局配置
    windows系统安装composer
    php设计模式之工厂模式
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2716699.html
Copyright © 2020-2023  润新知