72 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| up::[[langage de programmation]]
 | |
| title::"[[paradigme programmation orientée objet|OOP]], haut niveau"
 | |
| #s/informatique
 | |
| 
 | |
| > [!query]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")`
 | |
| > ```breadcrumbs
 | |
| > title: false
 | |
| > type: tree
 | |
| > dir: down
 | |
| > ```
 | |
| 
 | |
| # OOP
 | |
| voir : [[paradigme programmation orientée objet|OOP]]
 | |
| 
 | |
| ## Méthodes
 | |
| 
 | |
| 
 | |
| ## Héritage
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| ## Polymorphisme
 | |
| 
 | |
| > _polymorphisme_, vient du grec
 | |
| > signifie "_peut prendre plusieurs formes_"
 | |
| 
 | |
|  - basé sur la notion d'[[java#Héritage|héritage]]
 | |
| 
 | |
| > [!example] Exemple
 | |
| > ```java
 | |
| > Point p = new Point();
 | |
| > Object o = p;
 | |
| > o.deplace(3, 4); // ERREUR : deplace n'est pas une méthode de Object
 | |
| > Point p1 = (Point) o;
 | |
| > p1.deplace(3, 4); // OK : conversion de type
 | |
| > ((Point)o).deplace(3, 4); // OK aussi, mais nouvelle référence
 | |
| > ```
 | |
| > on remarque que `o`, qui est 
 | |
| 
 | |
| 
 | |
| **Exemple :**
 | |
| ```java
 | |
| class Animal {}
 | |
| class Lion extends Animal {}
 | |
| class Tigre extends Animal {}
 | |
| class Ours extends Animal {}
 | |
| 
 | |
| public class Essai {
 | |
|     public static void main(String args[]) {
 | |
|         /* foo est de type Animal */
 | |
|         Animal foo;
 | |
|         /* mais sera un objet d'une de ces classes : */
 | |
|         foo = new Lion();
 | |
|         foo = new Tigre();
 | |
|         foo = new Ours();
 | |
|         
 | |
|         Lion l;
 | |
|         Lion l = new Animal(); /* ⚠️ erreur car incompatibilité de type */
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 |