zoukankan      html  css  js  c++  java
  • 静态内部类

    外部类如何调用静态内部类中的属性和方法

       1)外部类可以通过创建静态内部类实例的方法来调用静态内部类的非静态属性和方法

       2)外部类可以直接通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法

    静态内部类如何调用外部类的属性和方法 

        静态内部类如果要访问外部的成员变量或者成员方法,那么必须是静态的

       1)静态内部类可以直接调用外部类的静态属性和方法

       2)静态内部类可以通过创建外部类实例的方法调用外部类的非静态属性和方法

    如何创建静态内部类实例

      创建静态内部类的时候是不需要将静态内部类的实例对象绑定到外部类的实例对象上

      静态内部类属于外部类,而不是属于外部类的对象

       1)在非外部类中:外部类名.内部类名 name = new 外部类名.内部类名();

       2)在外部类中:内部类名 name = new 内部类名();

    public class Outer {
        // 定义一个实例变量和一个静态变量
        private int a;
        private static int b;
    
        // 定义一个静态方法和一个非静态方法
        public static void say() {
        }
    
        public void test() {
            // 在外部类中调用内部类的属性和方法
            Outer.Inner.c = 1; // 可以通过静态内部类的全类名来调用静态内部类的静态属性(外部类名.静态内部类名.属性)
            Outer.Inner.go(); // 可以通过静态内部类的全类名来调用静态内部类的静态方法(外部类名.静态内部类名.方法)
            // Outer.Inner.walk(); //不能通过类静态内部类的全类名来调用内部类的非静态属性和方法
            Inner inner = new Inner(); //可以通过创建内部类实例来调用静态内部类的非静态属性和方法
            inner.d = 1;
            inner.walk(); 
        }
    
        // 静态内部类
        public static class Inner {
            // 在静态内部类中定义一个静态变量和一个实例变量
            static int c;
            int d;
            // 定义一个匿名代码块和一个静态代码块
            {
            }
            static {
            }
    
            // 定义一个静态方法和一个普通方法
            public static void go() {
                
            }
    
            public void walk() {
                // 在静态内部类中调用外部类的属性和方法
                int f = b; // 可以直接调用外部类的静态属性
                say(); // 可以直接调用外部类的静态方法
                // int e = a; 直接调用外部类的非静态属性出错编译出错
                // test(); 直接调用外部类的非静态方法时编译出错
                Outer outer = new Outer();
                int e = outer.a; // 可以通过创建外部类实例来调用外部类的非静态属性
                outer.test(); // 可以通过创建外部类实例来调用外部类的非静态方法
            }
        }
    }
  • 相关阅读:
    docker 部署aps.net MVC到windows容器
    docker 搭建私有仓库 harbor
    解决关于:Oracle数据库 插入数据中文乱码 显示问号???
    ionic cordova build android error: commamd failed with exit code eacces
    cordova build android Command failed with exit code EACCES
    Xcode 10 iOS12 "A valid provisioning profile for this executable was not found
    使用remix发布部署 发币 智能合约
    区块链: 编译发布智能合约
    mac 下常用命令备忘录
    JQuery fullCalendar 时间差 排序获取距当前最近的时间。
  • 原文地址:https://www.cnblogs.com/moris5013/p/10684623.html
Copyright © 2011-2022 走看看