Je ne suis qu'un débutant en Java qui vient d'apprendre à hériter des classes Si vous avez une mauvaise opinion, il serait utile que vous puissiez nous le dire d'une manière facile à comprendre. Cette fois, j'introduirai la compréhension de l'interface et quand il sera commode de l'utiliser avec des exemples concrets.
l'interface est utilisée pour implémenter et utiliser la méthode plus tard sans écrire spécifiquement le contenu du traitement au début. Efficace lorsque vous souhaitez modifier le processus car la méthode est implémentée ultérieurement.
Mon point de vue quand je ne savais que ce qui précède ---> ** L'utilisez-vous lorsque vous ne pouvez pas voir concrètement la vision précédente? ** ** ---> ** Si vous écrivez le code vous-même, devez-vous l'utiliser? ** ** ---> ** Est-ce utile quand vous voulez déclarer les variables à utiliser plus tard de toute façon et les utiliser ensemble plus tard? ** **
Seules la ** constante ** et la ** méthode ** peuvent être définies De plus, les variables membres de l'interface reçoivent automatiquement "public static final", elles deviennent donc des ** constantes **.
Définition d'interface (exemple)
interface Nom de l'interface{
int constante 1= 1;
int constante 2= 2;
Constante de chaîne 3= "hello";
void Nom de la fonction pour laquelle le traitement sera écrit ultérieurement();
}
Les constantes définies dans l'interface peuvent être réutilisées avec les noms de fonctions définis! ✌️
Exemple
Main.java
interface Calc {
int num1 = 1;
int num2 = 2;
String str1 = "multiplication";
String str2 = "division";
void calculation();
}
class Multi implements Calc {
public void calculation() {
System.out.println(str1);
System.out.println(num1 * num2);
}
}
class Divi implements Calc {
public void calculation(){
System.out.println(str2);
System.out.println(num1 / num2);
}
}
public class Main {
public static void main(String[] args){
Multi mlt = new Multi();
mlt.calculation();
Divi div = new Divi();
div.calculation();
}
}
Courir
$ java Main
multiplication
2
division
0
Les constantes et fonctions définies par le nom de l'interface *** Calc *** Vous pouvez voir qu'il est disponible dans la classe de multiplication *** Multi *** et la classe de division *** Divi ***
Je pense que certaines personnes ont pensé
Oui, ** la même chose si vous héritez de ce que vous avez défini dans la classe parent à la classe enfant! ** **
Ce n’est pas une erreur.
Alors, quels sont les avantages de ** interface **?
C'est ** vous pouvez hériter de plusieurs interfaces en même temps **
En ** héritage de classe **, lors de l'héritage d'une classe parent à une classe enfant, La classe enfant héritière ne doit pouvoir spécifier ** qu'une classe parent **.
** "Peut gérer (hériter) plusieurs interfaces créées précédemment" **
C'est l'avantage de ** l'interface ** sur ** l'héritage de classe **.
J'ai pensé que la fonction d'interface serait utile dans une telle situation.
Tout d'abord, jetez un œil au code ci-dessous. Entrez *** nombre d'élèves, nombre de salles de classe, nombre de notes *** de ma propre école, Résultats ** population par salle de classe et population par classe ** dans chaque école
Main.java
//école primaire
interface Primary_school {
int p_people = 500;
int p_classes = 18;
int p_year = 6;
String p_name = "Mine";
void pcal();
}
//Lycée
interface Junior_high_school {
int j_people = 750;
int j_classes = 27;
int j_year = 3;
String j_name = "Yoto";
void jcal();
}
//Université
interface University {
int u_people = 10000;
int u_classes = 50;
int u_year = 4;
String u_name = "Tsukuba";
void ucal();
}
//Densité de population de classe
class PopulationDensity implements Primary_school, Junior_high_school, University{//, Junior_high_school, University {
public void pcal() {
System.out.print(p_name+"--->");
System.out.println(p_people / p_classes);
}
public void jcal(){
System.out.print(j_name+"--->");
System.out.println(j_people / j_classes);
}
public void ucal(){
System.out.print(u_name+"--->");
System.out.println(u_people / u_classes);
}
}
//Densité de population de grade
class PopulationPerYear implements Primary_school, Junior_high_school, University{
public void pcal(){
System.out.print(p_name+"--->");
System.out.println(p_people / p_year);
}
public void jcal(){
System.out.print(j_name+"--->");
System.out.println(j_people / j_year);
}
public void ucal(){
System.out.print(u_name+"--->");
System.out.println(u_people / u_year);
}
}
public class Main {
public static void main(String[] args){
String pink = "\u001b[00;35m";
String cyan = "\u001b[00;36m";
String end = "\u001b[00m";
PopulationDensity PD = new PopulationDensity();
System.out.println(pink+"【PopulationPerClass】: "+end);
PD.pcal();
PD.jcal();
PD.ucal();
PopulationPerYear PPY = new PopulationPerYear();
System.out.println(cyan+"【PopulationPerYear】: "+end);
PPY.pcal();
PPY.jcal();
PPY.ucal();
//div.calculation();
}
}
Résultat d'exécution
Vous pouvez voir que chaque classe peut hériter de plusieurs interfaces définies.
Je pense que c'est une fonction très utile plus tard lorsque plusieurs personnes sont chargées de développer différentes données d'entrée.
Héritage de classe | interface | |
---|---|---|
mérite | Peut gérer les variables et les fonctions définies dans la classe parent | Peut gérer plusieurs interfaces en même temps |
Démérite | Une seule classe peut être héritée par une classe enfant | Ne peut gérer que les constantes |
Pour le moment, ça ressemble à ça aujourd'hui
Mis à jour: 2019/04/25
Recommended Posts