O que é polimórfico
Multi-estado, isto é, o estado de uma variedade de comportamentos. Refere-se a variável de tipo classe-mãe para apontar para o tipo de objecto para criar uma subclasse de usar o método variável em uma classe pai substituído por subclasses chamada, o método da classe pai exibem diferentes características comportamentais, este fenómeno é o multi-estado . Manifestação é a seguinte: o tipo de classe pai variáveis = subclasse objecto criado
mostra o código:
public class Mammal {//父类
public void move() {
System.out.println("正在移动...");
}
}
public class Bat extends Mammal{//子类
String weight = "1.2kg";
@Override
public void move() {
System.out.println("靠翼飞行...");
}
}
public class Test {//main方法中多态的表现
public static void main(String[] args) {
Bat bat = new Bat();
bat.move();
Mammal mammal = new Bat();//多态的表现形式
mammal.move();
}
características polimórficas
1, tempo de compilação e tipo de tempo de execução de inconsistência, caso contrário não irá gerar polimorfismo. item de teste no segmento meio de análise de código descrito:
Bat bat = new Bat();
bat.move();
Em tempo de compilação, como um tipo de variável subclasse, de modo que as chamadas para a compilação movimento subclasse; em tempo de execução, ao executar bat apontando para o objeto desta classe é criada, por isso chamamos este tipo de métodos de movimentação;
Mammal mammal = new Bat();
mammal.move();
Em tempo de compilação, o tipo de classe-mãe, de modo que o movimento de tempo de compilação para chamar a classe principal; em tempo de execução, ponto de mamífero para criar uma sub-classe de objecto, para ligar com o método da classe criança está em execução. Compilação e método de execução chamada é inconsistente, este fenômeno é chamado polimorfismo.
2, invocação de método em tempo de compilação deve substituídas por subclasses.
public class Mammal {//父类
public void move() {
System.out.println("正在移动...");
}
}
public class Bat extends Mammal{//子类
@Override
public void move() {
System.out.println("靠翼飞行...");
}
}
3, multi-estado, a variável mãe tipo de classe = subclasse objectos (também referido como o [↑] objeto de Transição)
código incorporada Código de ensaio classe, o Mamífero novo novo bastão = (); isto é, as formas específicas.
Mammal mammal = new Bat();
mammal.move();
Características da transformação de objetos
1, a transformação das propriedades do objecto e métodos não pode chamar a nova subclasse. (Código por exemplo, pode Mamífero Morcego em chamadas para se mover, mas a saída não vai sair de peso Bat.) Se as novas propriedades de transformação e métodos de subclasse chamada deve, ele precisa ser convertido para o próximo objeto de transformação. Referindo-se-á que o código no Teste anotada.
public class Mammal {//父类
public void move() {
System.out.println("正在移动...");
}
}
public class Bat extends Mammal{//子类
String weight = "1.2kg";
public void eat(){
System.out.println("正在吃虫子");
}
@Override
public void move() {
System.out.println("靠翼飞行...");
}
}
public class Test {//main方法中多态的表现
public static void main(String[] args) {
Bat bat = new Bat();
bat.move();
Mammal mammal = new Bat();//多态的表现形式
mammal.move();
Bat b = (Bat) mammal;//将上转型转化为下转型
System.out.println(b.weight);
b.eat();
2, a transformação de não-alvo não pode ser transformado em um objeto sob transformação.
3, se as variáveis de membros sub-classe repetir com a variável de membro classe pai, a transformação de um objecto é chamado de método da classe pai.
public class Mammal {//父类
int weight = 1.2;
public void move() {
System.out.println("正在移动...");
}
}
public class Bat extends Mammal{//子类
String weight = "1.2kg";
public void eat(){
System.out.println("正在吃虫子");
}
@Override
public void move() {
System.out.println("靠翼飞行...");
}
}
public class Test {//main方法中多态的表现
public static void main(String[] args) {
Bat bat = new Bat();
bat.move();
Mammal mammal = new Bat();//多态的表现形式
Bat b = (Bat) mammal;//将上转型转化为下转型
System.out.println(b.weight);
Nesta altura, o peso deve resultar saída na classe principal Mamífero "1.2."