Prefácio
A primeira vez que vi que você pode chamar métodos estáticos através de instâncias de classe em Java. Obviamente, isso não é recomendado para evitar problemas inesperados. Falarei sobre isso mais tarde, mas chamar métodos estáticos através de instâncias de classe em C # não compila Passará, faça uma anotação aqui.
A instância de classe chama o método estático
Primeiro, vejamos um exemplo simples para explicar por que métodos estáticos não podem ser chamados por meio de instâncias de classe. Sabemos que um objeto não instanciado lançará uma exceção de ponteiro nulo ao chamar o método ou campo correspondente, como o seguinte:
public static void main (String [] args) { Objeto o = null ; System.out.println (o.toString ()); }
No entanto, se for aplicado a um método estático, ocorrerão problemas inesperados, como o exemplo a seguir:
public class Player { public static final String type = "Human" ; int int privado ; public static String getType () { tipo de retorno ; } public int getAge () { return age; } }
public static void main (String [] args) { Player player = null ; System.out.println (player.getType ()); System.out.println (player.getAge ()); }
O objeto acima não é instanciado, mas o método estático de chamar sua variável não gera uma exceção e imprime o resultado.É claro que a resposta também é muito simples, porque o método estático pertence à classe e não à instância da classe, então a chamada acima player.getType ( ) Essencialmente, Player.getType () é chamado .
Sumário
A possibilidade de chamar métodos estáticos através de instâncias de classe em Java pode ser uma falha no design original. Claro, essa é apenas minha especulação pessoal. Não a estudei muito. Vejo que ela não é compilada e pode funcionar normalmente. Há uma grande diferença em relação ao C #, portanto, o registro é resumido.