Nous savons que les trois caractéristiques majeures de l'orientation objet sont l'encapsulation, l'héritage et le polymorphisme. Cependant, nous sommes parfois toujours confus quant à ces concepts. Ces concepts sont organisés ci-dessous pour jeter une base solide pour la future programmation orientée abstraction.
La notion d'encapsulation est quand même facile à comprendre. Si vous pouvez définir des classes, alors je pense que vous avez pleinement saisi le concept d'encapsulation. Les classes définies ci-dessous sont l'encapsulation des données.
L'avantage d'hériter de est la réutilisation du code. Les sous-classes héritées possèdent automatiquement toutes les propriétés et méthodes de la classe parent. Donc hériter de classes existantes signifie réutiliser les méthodes et les champs de ces classes. Sur cette base, les sous-classes peuvent également ajouter de nouvelles méthodes et de nouveaux champs pour répondre à de nouveaux besoins. Il s'agit d'une technologie fondamentale dans la programmation Java.
Alors comment juger si un héritage est nécessaire ? La relation « est-un » est une caractéristique évidente de l’héritage. Le sens de cette phrase peut être interprété comme : La raison pour laquelle l’Étudiant hérite de la Personne est parce que l’Étudiant est une Personne. S’il n’y avait pas une telle relation, il n’y aurait pas besoin d’héritage. C'est aussi la définition du principe de substitution de Liskov, les sous-types doivent pouvoir remplacer leurs types parents.
Lors de la définition d'une sous-classe en étendant une superclasse, il vous suffit de souligner les différences entre la sous-classe et la superclasse. Par conséquent, lors de la conception d'une classe, les méthodes générales doivent être placées dans la super classe,
et les méthodes à des fins spéciales doivent être placées dans des sous-classes. Cette approche consistant à placer des fonctions générales dans la super classe est très courante dans les objets. programmation orientée.
La liaison dynamique a une fonctionnalité très importante : le programme peut être étendu sans modifier le code existant. Le polymorphisme est donc la base du principe ouvert et fermé.
Ce qui suit est un exemple spécifique d'héritage et d'implémentation polymorphe :
abstract est le mot-clé abstract. (Il vaut mieux hériter d’une classe abstraite que d’une classe concrète).
public abstract class Person { // 抽象类
private String name; // 私有变量
public String getName() { // Getter方法
return name;
} public void setName(String name) { //Setter方法
this.name = name;
}
public Person(String name) { // 构造函数,用于初始化name
super(); this.name = name;
} public abstract String getDesc(); // 抽象类中的抽象方法。 只有声明,没有具体实现。
public String toString(){ // toString方法覆盖了Object类的toString方法
return name + getDesc();
}
}
extends est un mot-clé hérité. Student hérite de Person, donc Student a l'attribut name.
public class Student extends Person { // 继承类
private String major; // 新增加的数据
public String getMajor() { return major;
} public void setMajor(String major) { this.major = major;
}
public Student(String name,String major) { // 构造函数用于初始化
super(name); // 调用超类构造函数
this.major = major;
}
@Override public String getDesc() { // 必须实现超类中的抽象方法 // TODO Auto-generated method stub
return " : a student, major is " + major;
}
Toute sous-classe qui hérite d'une super classe doit implémenter (quelle que soit la méthode d'implémentation) la définition dans la super classe méthode abstraite. public class Employee extends Person{
private double salary;
public double getSalary() {
return salary;
}public void setSalary(double salary) {
this.salary = salary;
}
public Employee(String name, double salary) {
super(name);
this.salary = salary;
}
@Override
public String getDesc() { // TODO Auto-generated method stub
return " :a employee, salary is " + salary;
}
}
rrreeExécution des résultats
Comprendre l'encapsulation, l'héritage et le polymorphisme (en particulier le polymorphisme) est la base pour comprendre les modèles de conception.
Pour en savoir plus sur les tutoriels Java, vous pouvez visiter :
Tutoriel JavaCe 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!