Maison  >  Article  >  Java  >  Polymorphisme orienté objet Java

Polymorphisme orienté objet Java

王林
王林avant
2019-11-29 15:02:391763parcourir

Polymorphisme orienté objet Java

Une compréhension simple du polymorphisme :

La classe étudiante hérite de la classe Personne, alors l'objet de la classe étudiante est à la fois un étudiant et une classe de personne

Le polymorphisme a deux formes de présentation :

1) Polymorphisme des méthodes :

(1) Méthode. Surcharge : La même méthode peut implémenter différentes fonctions selon le type ou le nombre de paramètres passés dans

(2) Remplacement des méthodes : La même méthode peut avoir des fonctions différentes selon la sous-classe d'implémentation Implémentation de

2. Polymorphisme d'objet :

Traitement de conversion entre les instances de classe parent et de sous-classe

(1) Transformation d'objet vers le haut : classe parent instance de classe parent = nouvelle instance de sous-classe ( ); terminer automatiquement la conversion

(2) Transformation vers le bas de l'objet : instance de sous-classe de sous-classe = nouvelle instance de classe parent (sous-classe) (); obligatoire Terminer la conversion

Partage du didacticiel vidéo associé : Tutoriel vidéo gratuit Java

L'incarnation finale du polymorphisme :

1. Les variables de référence de la classe parent peuvent pointer vers des objets de sous-classe

2. .Le principe du polymorphisme est qu'il doit y avoir une relation de classe enfant-parent ou une relation d'interface d'implémentation de classe, sinon le polymorphisme ne peut pas être obtenu

3 Lors de l'utilisation du polymorphisme Lorsque la variable de référence de classe parent avec état appelle une méthode, la méthode réécrite de la sous-classe sera appelée

Variable membre polymorphe :

1. Lors de la compilation, Référence : Il n'y a pas de variable de ce type dans la classe parent S'il y en a. Autrement dit, la compilation réussira. Sinon, la compilation échouera

2. Lors de l'exécution, la valeur de la variable dans la classe parent sera exécutée.

Compilation des variables membres. regardez les méthodes membres polymorphes de la classe parent

 :

1 Lors de la compilation, vérifiez s'il existe une telle méthode dans la classe parent. la compilation réussira. Sinon, la compilation échouera

2. Lors de l'exécution. Ce qui est exécuté est la méthode remplacée de la sous-classe

La méthode membre compile et examine la classe parent, et exécute l'examen de la sous-classe

Compréhension des deux méthodes de transformation d'objets :

1. Transformation ascendante d'objet :

Après une transformation ascendante, les objets de sous-classe ne peuvent appeler que des méthodes appartenant à la classe parent et ne peuvent pas appeler des méthodes appartenant à la classe parent. sous-classe seule. Ceci est réalisé par transformation ascendante. Utilisation du polymorphisme

2. Transformation descendante de l'objet :

Si après la transformation ascendante de l'objet vous souhaitez utiliser des méthodes uniques. à la sous-classe mais introuvable dans la classe parent, le downcasting des objets est requis

Démonstration de code :

public   class Person {
	public  void Eat(){
		//在person类中定义一个吃的抽象方法
	}
}

public class Student extends Person{
	public  void Eat(){
		System.out.println("学生吃学校食堂");//重写父类中的抽象方法
	}
	public void Learning()
	{
		System.out.println("学生在学习");//定义一个student类特有的方法
	}
}
public class Test {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Person p=new Student();//通过向上转型定义一个p对象
		p.Eat();//这是子父类共有的方法
		p.Learning();
	}
}

Dans ce code, nous appelons une méthode spécifique à la sous-classe via le upcasting, mais l'invite suivante sera apparaissent :

Polymorphisme orienté objet Java

La méthode Learning n'est pas définie dans la classe parent. Mais nous devons appeler la méthode unique de la sous-classe. À ce stade, nous devons l'implémenter par transformation vers le bas

Le code supplémentaire est le suivant :

Student stu=(Student)p;//将p对象向下转型实现方法调用
		stu.Learning();

Si vous voulez en savoir plus. tutoriels, veuillez visiter : Démarrage rapide Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer