Sempre definimos classes para criar objetos. Objetos são entidades com funcionalidade, enquanto classes são classificações de tipos de objetos. Este é um conceito básico de orientação a objetos.
Na herança, tratamos as classes como assuntos expansíveis, o que melhora a nossa compreensão das “classes”.
Há muito mais para discutir sobre a aula em si. Continuaremos a aprofundar
membros de dados estáticos
Existem alguns dados usados para expressar o estado da classe. Por exemplo, na classe Humano, podemos usar “população” para representar o número total de objetos na classe Humano. "População" descreve diretamente o estado de uma classe, não de um objeto.
A classe Humana tem uma população de 8
Todos os objetos da classe compartilham os dados de “população”. Esses dados são chamados de membro de dados de classe (campo de classe).
Na definição da classe, usamos a palavra-chave estática para declarar membros de dados da classe, como:
Copie o código do código da seguinte forma:
classeHumano
{
/**
* construtor
*/
humano público (int h)
{
esta.altura = h;
}
/**
*acessador
*/
público int getHeight()
{
retorne esta altura;
}
/**
* mutador
*/
public void growHeight(int h)
{
esta.altura = esta.altura + h;
}
/**
*respiração
*/
respiração do vazio público()
{
System.out.println("hu...hu...");
}
altura interna privada;
população interna estática privada;
público estático booleano is_mammal = true;
}
Definimos dois membros de dados de classe: população e is_mammal. Todos os objetos Humanos compartilham dados de população; o atributo is_mammal (é um mamífero) de qualquer objeto Humano é verdadeiro.
Os membros dos dados da classe também precisam definir permissões de acesso. Para membros de dados de classe declarados como públicos, eles podem ser acessados diretamente de fora usando class.field ou object.field (se existir um objeto desta classe). Ambos os métodos de acesso são razoáveis porque os membros dos dados da classe podem ser considerados atributos da classe e podem ser considerados atributos compartilhados por todos os membros. Se um membro de dados da classe for definido como privado, o membro de dados da classe só poderá ser acessado de dentro da classe.
(Is_mammal está definido como público acima apenas para demonstração. Isso é bastante perigoso. Se alguém usar Human.is_mammal=false;, todos os humanos sofrerão. Novamente, o princípio básico é definir os dados como privados tanto quanto possível.)
método estático
Também podemos ter métodos de classe, que são métodos declarados como estáticos. Os métodos de classe representam ações que uma classe pode implementar e as operações não envolvem um objeto específico. Se um método for declarado estático, ele só poderá chamar dados e métodos estáticos, mas não dados e métodos não estáticos.
Na verdade, em um método estático, não haverá this e superparâmetros passados implicitamente. Não temos como referenciar os dados e métodos pertencentes ao objeto (que é exatamente o que queremos).
Com base no que foi dito acima, temos a seguinte relação:
Uma linha pontilhada vermelha indica inacessibilidade. Em outras palavras, os dados do objeto não podem ser acessados em métodos de classe.
Em seguida, adicionamos um método estático getPopulation(), que retorna a população de dados estáticos:
Copie o código do código da seguinte forma:
classeHumano
{
/**
* construtor
*/
humano público (int h)
{
esta.altura = h;
}
/**
*acessador
*/
público int getHeight()
{
retorne esta altura;
}
/**
* mutador
*/
public void growHeight(int h)
{
esta.altura = esta.altura + h;
}
/**
*respiração
*/
respiração do vazio público()
{
System.out.println("hu...hu...");
}
altura interna privada;
/*
* método estático, população de acesso
*/
público estático int getPopulation()
{
retornar População Humana;
}
população interna estática privada;
private static boolean is_mammal = true;
}
Ao chamar um método de classe, podemos chamá-lo através de class.method() ou object.method(). Por exemplo, use o seguinte teste da classe Test:
Copie o código do código da seguinte forma:
Teste de classe pública
{
público estático void principal(String[] args)
{
System.out.println(Human.getPopulation());
Humano aPerson = novo Humano(160);
System.out.println(aPerson.getPopulation());
}
}
Chamamos o método de classe getPopulation() fora da definição de classe de duas maneiras.
Métodos de objeto modificam dados de classe
Vemos que os métodos de objeto podem acessar dados de classe. Este é um conceito muito útil. O estado de uma classe pode mudar com os objetos. Por exemplo, “população” deve aumentar em 1 à medida que um objeto é criado. Podemos modificar os dados de “população” da classe nos métodos do objeto. Acessamos os membros dos dados da classe no construtor abaixo. O método de construção aqui é um método não estático, ou seja, um método de objeto:
Copie o código do código da seguinte forma:
classeHumano
{
/**
* construtor
*/
humano público (int h)
{
esta.altura = h;
População.humana = População.humana + 1;
}
/**
*acessador
*/
público int getHeight()
{
retorne esta altura;
}
/**
* mutador
*/
public void growHeight(int h)
{
esta.altura = esta.altura + h;
}
/**
*respiração
*/
respiração do vazio público()
{
System.out.println("hu...hu...");
}
altura interna privada;
/*
* método estático, população de acesso
*/
público estático int getPopulation()
{
retornar População Humana;
}
população interna estática privada;
private static boolean is_mammal = true;
}
Cada vez que criamos um objeto, modificamos os dados da classe através do método de construção do objeto e aumentamos os dados da classe populacional em 1. Desta forma, a população pode refletir o número total de objetos pertencentes a esta classe em tempo real (você pode criar vários objetos em Teste e depois imprimir Human.population).
Além do exemplo de construtor fornecido acima, também podemos acessar dados de classe em métodos de objetos comuns.
final
O significado básico da palavra-chave final é: Este dado/método/classe não pode ser alterado.
1. Dados finais do tipo básico: valor constante, que só pode ser atribuído uma vez e não pode ser modificado novamente.
2.Método final: Este método não pode ser substituído. Os métodos privados são padronizados como métodos finais.
3.Classe final: Esta classe não pode ser herdada.
Objetos de tipos comuns também podem ter a palavra-chave final, o que significa que a referência do objeto (referência) não pode mais ser modificada. Ou seja, a referência só pode apontar para um objeto. No entanto, o conteúdo do objeto pode mudar (semelhante aos ponteiros estáticos em C). Abordaremos as referências de objetos mais tarde.
Se um tipo básico de dados for final e estático, ele armazenará apenas uma cópia do valor fixo. Isso é ótimo para armazenar constantes como pi.
Resumir
campo estático, método estático
class.static_method()
final