Maison  >  Article  >  Java  >  Bases de Java - Héritage

Bases de Java - Héritage

巴扎黑
巴扎黑original
2017-06-26 11:29:161154parcourir

Avant d'apprendre l'héritage Java, nous aimerions rappeler plusieurs points clés qui nécessitent une attention particulière en Java orienté objet.

L'orientation objet simplifie les choses complexes. Elle rend le code plus réutilisable et plus sûr grâce à l'encapsulation. Habituellement, nous devons apprendre à penser de manière orientée objet et à décrire des choses ou des comportements.

Si vous souhaitez utiliser la POO, vous devez connaître ses trois caractéristiques principales :

1. Le comportement de l'objet : quelles opérations vous pouvez appliquer à l'objet, ou quelles méthodes vous peut s'appliquer à l'objet.

2. L'état de l'objet : comment l'objet répond lorsque ces opérations sont appliquées.

3. Identité d'objet : Comment identifier différents objets ayant le même comportement et le même statut.

Toutes les instances d'objets de la même classe ont des similitudes familiales car elles prennent en charge le même comportement. Le comportement d'un objet est défini par des méthodes appelables. De plus, chaque objet conserve des informations décrivant ses caractéristiques actuelles. L’état d’un objet peut changer avec le temps, mais le changement ne sera pas spontané. Les modifications apportées à l'objet doivent être réalisées en appelant des méthodes.

1. Relation entre classes

* Dépendance ("utilise-a")

* Agrégation ("has-a")

* L'héritage ("est-un")

Ici, je vais donner une petite châtaigne de nos courses quotidiennes pour expliquer brièvement les différences entre ces trois relations. Nous avons passé une commande sur un certain trésor, et certains noms apparaîtront dans le système de traitement des commandes :

Par exemple : Article, Commande, Adresse de livraison, Paiement (paiement), compte (Compte), etc. Ils sont répartis dans différentes classes par les programmeurs.

La dépendance est comme une méthode d'une classe manipulant un objet d'une autre classe. Lorsque vous passez une commande, la classe Order peut utiliser la classe Account car l'objet Order doit accéder aux informations de crédit de l'objet Account. (Vous pouvez penser au big data ou au prêt bancaire)

Agrégation, l'agrégation signifie que les objets de classe A contiennent des objets de classe B. Tout comme un objet Order doit contenir des objets Item.

L'héritage, tout comme la classe RushOrder est héritée de la classe Order. Ci-dessous, nous présenterons en détail les points de connaissance pertinents en matière d'héritage.

2. Explication importante de l'héritage

À mon avis, l'héritage est une attitude positive et optimiste qu'on a le courage d'adopter changement. C'est le processus de création de nouvelles classes à partir de classes existantes. De l'héritage, vous pouvez voir la dérivation, la mise à niveau et l'expansion des produits.

1. Syntaxe d'héritage

Le mot-clé extend indique que la nouvelle classe est dérivée d'une classe existante. Cette classe existante est appelée classe parent et la classe dérivée est appelée sous-classe.

Par exemple :

class A extends B {
}//A类派生于B类

2.继承中的初始化顺序

简单来说,类的内部结构常见形态有四种:

1)属性(包括类属性和实例属性)

2)方法(包括类方法和实例方法)

3)构造器

4)初始化块(包括类的初始化块和实例的初始化块)

对于继承中的初始化顺序,可分为类的初始化和对象的初始化。

1)继承中类的初始化:(前提:父类中的属性和方法没有private修饰)

在JVM装在类的准备阶段,先为类的所有类属性和类初始化块分配内存空间。并在首次初始化阶段苏红为其进行初始化,类属性和类初始化块之间的定义时的顺序决定了其初始化的顺序。若存在父类,则首先初始化父类属性和类初始化块,一种上溯到Object类最先执行。

2)继承中对象初始化:(前提:父类中的属性和方法没有private修饰)

在new创建新对象时,首先对对象属性和初始化代码块分配内存,并执行默认的初始化。如果存在父类,则先搞好父类的。然后执行父类构造器中的初始化程序,接着才开始对子类的对象属性和初始化执行初始化。

3.继承中的隐藏

访问控制符的带来的访问权限,在上一篇的博客中我已经用表格的形式展示了。这里不再赘述。

当子类继承父类,子类可以继承父类中具有访问控制权限的属性和方法(不要被private修饰就可以了),对于用了private修饰的的父类所有的属性和方法,子类就继承不来了。

当子类需要改变继承过来的方法时,就需要用到重写方法了。一旦重写后,父类的方法对子类来说就表现为隐藏。你再想调用,就将调用重写后的子类当中的方法了。

当你重写了,还想调用父类,可以用两种方法:

1)将子类对象类型强制转换为父类类型,进行强调;

2)通过super.调用,注意它一定要被写到第一行。格式:super.method()

4.注意事项总结:

1)在子类构建对象时,先构建父类,再构建子类。

2)在方法调用的时候,永远永远永远是先在子类中找,子类中如果没有,再去父类中找。

代码示例:

1 public class JiC {2     public JiC() {3         System.out.println("我是父类");4     }5 6     public void method() {7         System.out.println("我是父类中的一个方法");8     }9 }
 1 class B extends JiC { 2     public B() { 3         System.out.println("我是子类"); 4     } 5  6     public void method() { 7         System.out.println("我是子类中的一个方法"); 8     } 9 }10 11 public class JiC2 {12     public static void main(String[] aegs) {13         System.out.println("上面示例的打印结果是:");14         B b = new B();15         b.method();16     }17 }

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:
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