polimorfismo Java em detalhes

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."

Publicado 19 artigos originais · ganhou elogios 0 · Visualizações 466

Acho que você gosta

Origin blog.csdn.net/zzu957/article/details/104716940
Recomendado
Clasificación