• [编写高质量代码:改善java程序的151个建议]建议33:不要覆写静态方法


    覆写是针对非静态方法,不能针对静态方法。

    public class Base {
        public static void doSth() {
            System.out.println("Base:Sth");
        }
        public void doAnyth() {
            System.out.println("Base:Any");
        }
    }
     
    public class Sub extends Base {
        public static void doSth() {
            System.out.println("Sub:Sth");
        }
        public void doAnyth() {
            System.out.println("Sub:Any");
        }
    }
     
    public class Client {
        public static void main(String[] args) {
            Base base = new Sub();
            Sub sub = new Sub();
            base.doAnyth();
            base.doSth();
            Sub.doSth();
            sub.doAnyth();
            sub.doSth();
        }
    }
     
    ---
    Sub:Any
    Base:Sth
    Sub:Sth
    Sub:Any
    Sub:Sth
     
    非静态方法,是根据对象的实际类型来执行的。
    静态方法,如果是类调用,根据类名来选择方法,如果是对象调用,根据对象的实际类型来调用方法。
     
    in all,用对象调用静态方法、属性的习惯不是很好,给代码带来了"坏味道"。
  • 相关阅读:
    php CI笔记
    Apache 2.4权限设置( you don't have permission to access / on this server Apache2.4)
    关闭浏览器时退出登录
    onunload 和 onbeforeunload都不执行
    apache ab压力测试工具需要用户登录才能测得时候怎么办?
    《国富论》读书笔记
    数据库设计技巧
    溜到不行。。
    Session和Cookie
    c#缓存
  • 原文地址:https://www.cnblogs.com/akingseu/p/3464610.html
Copyright © 2020-2023  润新知