Maison > Java > javaDidacticiel > le corps du texte

Accès aux champs et méthodes statiques en Java sans compréhension polymorphe

一个新手
Libérer: 2017-10-10 09:26:00
original
1548 Les gens l'ont consulté

1. L'association d'un appel de méthode au corps de la méthode est appelée

2. La liaison au moment de la compilation (statique) détermine le type de l'objet référencé lors de la phase de compilation du programme

3 . La liaison d'exécution (liaison dynamique) fait référence à la détermination du type réel de l'objet référencé pendant l'exécution et à l'appel de sa méthode correspondante en fonction de son type réel

4. (Les méthodes privées sont des méthodes finales), toutes les autres méthodes sont à liaison tardive et toutes les méthodes en Java obtiennent un polymorphisme grâce à une liaison dynamique

5. Le comportement d'accès à un certain domaine n'est pas avec le polymorphisme


package polymorphism;

class SuperField {
	public int field = 1;

	public int getField() {
		return field;
	}
}

class SubField extends SuperField {
	public int field = 2;
	
	public int getField() {
		return field;
	}
	
	public int getSuperField() {
		return super.field;
	}
}

public class FieldPolymorphism {

	public static void main(String[] args) {
		SuperField sup = new SubField();
		System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField());
		SubField sub = new SubField();
		System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField() +
				", sub.getSuperField() = " + sub.getSuperField());
	}

}
Copier après la connexion

Résultat de sortie :

sup.field = 1, sup.getField() = 2
sub.field = 2, sub.getField() = 2, sub.getSuperField() = 1
Copier après la connexion

Lorsque l'objet SubField est converti en une super référence, toute opération d'accès au domaine sera compilée par Elle est analysée par le processeur, il n'est donc pas polymorphe. SubField contient en fait deux champs appelés champs : le sien et hérité de SuperField

Habituellement, le champ est défini sur privé et n'est pas accessible directement ou hérité, accessible en appelant une méthode.

6. L'accès à une méthode statique n'est pas polymorphe et n'est pas associé à un seul objet


package polymorphism;

class Super {
	
	public static String staticMethod() {
		return "Super staticMethod()";
	}
}

class Sub extends Super {
	public static String staticMethod() {
		return "Sub staticMethod()";
	}
}

public class StaticPolymorphism {

	public static void main(String[] args) {
		Super sup = new Sub();
		System.out.println(sup.staticMethod());
		System.out.println(Sub.staticMethod());
	}

}
Copier après la connexion

Résultat de sortie :

Super staticMethod()
Sub staticMethod()
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal