Definição de métodos de instância e métodos de classe
Ao declarar um método, o tipo de método que não é modificado pela palavra-chave static é um método de instância, e o tipo de método que é modificado pela palavra-chave static é um método de classe, também chamado de método estático.
Por exemplo:
classMain{inta;floatmax(floatb,floatc){//Método de instância...}staticfloatmax(floatd,floate){//Método de classe...}}
A diferença entre métodos de instância e métodos de classe
1. O objeto chama o método de instância:
Quando o arquivo de bytecode de uma classe é carregado na memória, o método de instância da classe não receberá um endereço de entrada. Somente depois que a classe criar um objeto, o método de instância na classe receberá um endereço de entrada, de modo que o O método de instância pode ser usado por qualquer objeto criado pela execução de chamada de objeto.
Perceber:
Quando criamos o primeiro objeto, o método de instância na classe recebe um endereço de entrada. Quando o objeto é criado novamente, o endereço de entrada não é mais atribuído. . Quando todos os objetos Quando nenhum deles existir, o endereço de entrada do método será cancelado.
Os métodos de instância podem operar não apenas variáveis de instância, mas também variáveis de classe. Quando um objeto chama um método de instância, as variáveis de instância e de classe que aparecem no método são variáveis atribuídas ao objeto, mas as variáveis de classe são compartilhadas com todos os outros objetos.
2. Chame o método da classe usando o nome da classe:
Para métodos de classe em uma classe, quando a classe é carregada na memória, o endereço de entrada correspondente é atribuído, de modo que o método de classe pode não apenas ser chamado e executado por qualquer objeto criado pela classe, mas também pode ser chamado diretamente através do nome da classe. O endereço de entrada do método de classe não é cancelado até que o programa seja encerrado.
Perceber:
Os métodos de instância não podem ser chamados pelo nome da classe, apenas pelos objetos. E como as variáveis-membro da instância não alocaram memória antes da classe criar o objeto, o método da classe não pode operar as variáveis de instância.
3. Princípios de design de métodos de classe:
Se um método não precisar operar nenhuma variável de instância na classe para atender às necessidades do programa, considere projetar esse método como um método estático.
Para métodos estáticos, você pode chamá-lo diretamente com o nome da classe sem criar um objeto. A criação de um objeto fará com que variáveis de instância na classe recebam espaço de memória.