Pacote
Algumas informações da classe estão ocultas dentro da classe e nenhum programa externo tem permissão para acessá-las diretamente, e a operação e o acesso às informações ocultas podem ser realizados através dos métodos fornecidos pela classe. Em outras palavras, oculte as informações do objeto e saia da interface de acesso. Para atingir o objetivo diretamente manipulando o objeto da classe, não há necessidade de se ter um bom entendimento da implementação específica, e a implementação específica dos atributos e métodos da classe é invisível para o exterior. Não é apenas conveniente, mas também protetor.
por exemplo
public class Student {
private int id;//id属性私有化
private String name;//name属性私有化
//获取id的方法
public int getId() {
return id;
}
//设置id的方法
public void setId(int id) {
this.id = id;
}
//获取name的方法
public String getName() {
return name;
}
//设置name的方法
public void setName(String name) {
this.name = name;
}
}
herdar
Herança é uma tecnologia que usa a definição de uma classe existente como base para criar uma nova classe. A definição de uma nova classe pode adicionar novos dados ou novas funções, ou usar as funções da classe pai, mas não pode herdar seletivamente o pai classe. O código anterior pode ser reutilizado facilmente usando herança.
Lembre-se dos seguintes 3 pontos sobre herança:
-
A subclasse tem todas as propriedades e métodos do objeto da classe pai (incluindo propriedades privadas e métodos privados), mas as propriedades e métodos privados na classe pai são inacessíveis para a subclasse, eles simplesmente os possuem.
-
As subclasses podem ter suas próprias propriedades e métodos, ou seja, as subclasses podem estender a classe pai.
-
As subclasses podem implementar os métodos da classe pai de sua própria maneira.
Polimorfismo
Polimorfismo, como o nome indica, significa que um objeto tem vários estados. Especificamente, a referência da classe pai aponta para a instância da classe filha.
Definição de polimorfismo
Refere - se ao tipo específico apontado pela variável de referência definida no programa e a chamada do método emitida através da variável de referência não é determinada no momento da programação, mas é determinada durante a execução do programa , ou seja, a instância do objeto para qual classe uma variável de referência apontará. O método no qual a chamada de método emitida pela variável de referência é o método implementado na classe deve ser determinado durante a execução do programa.
Vantagens do polimorfismo
Como a classe específica é determinada quando o programa está em execução, a variável de referência pode ser associada a uma variedade de implementações de classe diferentes sem modificar o código-fonte, o que fará com que o método específico chamado pela referência mude de acordo, isto é, não modificar O código do programa pode alterar o limite do código específico quando o programa está em execução, para que o programa possa selecionar vários estados de execução, o que é polimorfismo.
Características do polimorfismo
- Existe uma relação de herança (classe) / implementação (interface) entre o tipo de objeto e o tipo de referência;
- O método no qual o método emitido pela variável de tipo de referência chama o método no qual a classe deve ser determinada durante a execução do programa;
- O polimorfismo não pode chamar o método "existe apenas na classe filha, mas não existe na classe pai";
- Se a subclasse sobrescrever o método da classe pai, o método que a subclasse cobre é realmente executado.Se a subclasse não sobrescrever o método da superclasse, o método da superclasse é executado.
Implementação de polimorfismo
Existem duas formas de polimorfismo em Java: herança (reescrever o mesmo método por várias subclasses) e interface (implementar a interface e substituir o mesmo método na interface).
por exemplo
public class Animal {
int id = 1;
public void name(){
System.out.println("动物");
}
}
class Cat extends Animal{
int id = 2;
public void name(){
System.out.println("猫");
}
}
//子类对象的多态性使用前提:1.要有类的继承 2.要有子类对父类方法的重写
public class Test {
public static void main(String[] args) {
//子类对象的多态性:父类的引用指向子类对象
Animal a = new Cat();//向上转型
//虚拟方法调用:通过父类的引用指向子类对象的实体,调用方法时,实际执行子类重写父类的方法
a.name();//输出:猫
//输出的是Person对象的id属性
System.out.println(p.id);//输出:1
}
}