前言

第一次看到在JAVa中可以通过类实例挪用静态方式,固然不推荐这么做,制止泛起意想不到的问题,接下来会讲到,然则在C#中通过类实例挪用静态方式在编译时就不会通过,这里做下纪录。

类实例挪用静态方式

首先我们来看一个简朴的例子说明为何不能通过类实例挪用静态方式,我们知道未实例化的工具去挪用对应方式或者字段时会抛出空指针异常,好比如下:

public static void main(String[] args) {
    Object o = null;
    System.out.println(o.toString());
}

然则若将其应用到静态方式上则会泛起意想不到的问题,好比如下例子:

public class Player {
    public static final String type = "Human";

    private int age;

    public static String getType() {
        return type;
    }

    public int getAge() {
        return age;
    }
}
public static void main(String[] args) {
    Player player = null;
    System.out.println(player.getType());
    System.out.println(player.getAge());
}

上述工具并未实例化,然则挪用其变量的静态方式却不会抛出异常并能打印出效果,固然谜底也很简朴,由于静态方式是属于类而非类实例,以是上述挪用&NBsp;player.getType() 本质上肯定是挪用 Player.getType() 。 

总结

在Java中通过类实例可以挪用静态方式可能是在最初设计时所发生的缺陷,固然,这只是我小我私家的忖度,没有再过多深究,看到居然编译不失足而且可以正常运行,以为这一点和C#有很大的区别,故此纪录总结下。

,

申博Sunbet

申博Sunbet www.xzsxzxx.cn是Sunbet娱乐的官方网站,是亚洲唯一的Sunbet。公司业务主要范围:Sunbet、Sunbet、sunbet娱乐等。

发布评论

分享到:

联博api:{关智斌首演}反常角色 多得温碧霞{教路}
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。