zoukankan      html  css  js  c++  java
  • 静态方法、实例方法和域

    1.方法调用

    方法 类调用 对象调用
    静态方法
    实例方法 不能 不能

    2.调用时特性

    • 静态方法调用只和引用类型有关
    • 实例方法和实例变量调用只和引用指向的对象有关
    class StaticSuper {
        public int field = 1;
        public static int sField = 2;
    
        public static String staticGet() {
            return "Base S";
        }
    
        public String dynamicGet() {
            return "Base D";
        }
    }
    
    class StaticSub extends StaticSuper {
        public int field = 11;
        public static int sField = 22;
    
        public static String staticGet() {
            return "Derived S";
        }
    
        public String dynamicGet() {
            return "Derived D";
        }
    }
    
    public class StaticAndField {
        public static void main(String[] args) {
            StaticSuper sup = new StaticSub();
            System.out.println(sup.staticGet());
            System.out.println(sup.dynamicGet());
            System.out.println(sup.field);
            System.out.println(sup.sField);
            StaticSub sub = new StaticSub();
            System.out.println(sub.staticGet());
            System.out.println(sub.dynamicGet());
            System.out.println(sub.field);
            System.out.println(sub.sField);
        }
        // 输出结果:
    //  Derived D
    //  1
    //  2
    //  Derived S
    //  Derived D
    //  11
    //  22
    }

    3.多态性

    • 原则上静态犯法不具有多态性;
    • 如果子类和父类有相同的方法:
      • 实例方法是被覆盖(重写),子类中不存在父类方法;
      • 静态方法是被隐藏,在子类中同时拥有子类和父类方法;

    4.域

    • 实例变量和静态变量调用都只跟应用类型有关
    • 具体参照前面案例代码输出结果

    5.私有实例方法

    • 由于默认是final的,在调用上和静态方法类似,只跟引用类型有关
  • 相关阅读:
    内存映射文件原理探索(转)
    inux内存映射和共享内存理解和区别
    MySQL中的sleep函数介绍
    flask源码解析之上下文为什么用栈
    linux system函数详解
    Python中的可迭代对象、迭代器和生成器,协程的异同点
    GB2312汉字区位码、交换码和机内码转换方法 (ZT)
    pthread_cond_signal该放在什么地方?
    IPC介绍——10个ipcs例子
    lsof
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256186.html
Copyright © 2011-2022 走看看