继承和派生都是java重要知识点,继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。而在java的继承关系中,新的类称为子类,也叫派生类。那java中继承和派生的区别是什么?下面来我们就来给大家讲解一下。
1.继承
继承,顾名思义,就是把已经有的拿过来归为己用,java中的继承也不例外。举个例子,假如现在有这样一个需求,让我们写一个关于狗的Dog类,Dog类中有狗的名字、年龄,还有狗的两种行为,也就是这个类的两种方法,分别是run(跑)方法和bark(犬吠)方法,那么我们就可以这样写:
public class Dog { String name; int age; public void run() { System.out.println("狗在跑!"); } public void bark() { System.out.println("狗在叫!"); } }
很好,我们实现了Dog这个类,那么现在如果让我们写一个拉布拉多类(狗的一种)呢?显然,拉布拉多也具有名字、年龄、跑、叫的行为,那么如果我们从头开始写拉布拉多这个类,就太麻烦了,我们还要重新写一遍刚才写的东西,这个时候,就要用到继承,所以我们可以这样去写:
public class Labuladuo extends Dog {}
extends是继承的关键字,通过extends,我们实现了让拉布拉多这个类继承了Dog这个类,这不难理解,毕竟,拉布拉多就是狗的一种嘛。现在,由于我们的访问权限设置的都是public,那么父类具有的东西子类也有,于是,拉布拉多也有了名字、年龄两个成员变量,有了跑和叫两个方法。
2. 派生
顾名思义,派生是在继承了一些东西的基础上增添了新的东西,派生是依存于继承的,子类在拿来父类的东西去使用的同时,可以增添新的东西或者对继承来的东西进行覆写让其适用于子类。例如,我们现在在继承了Dog类的拉布拉多类中新增一个给盲人导盲的方法daoMang(),那么,我们仅仅用子类对象才能调用这个方法,而用父类对象无法调用,因为这个方法是子类拉布拉多类独有的,也就是说,这是从父类的基础上拓展出来的方法,也就是派生。此时的拉布拉多,既可以使用父类Dog类的所有狗都共有的run和bark方法,也同时具有了Dog类的name和age的狗的基本属性。
public class Labuladuo extends Dog { public void daoMang() { System.out.println("我会导盲!"); } }
其实派生是在继承了一些东西的基础上增添了新的东西,派生是依存于继承的,并且java的继承关系中,新的类称是子类,也就是派生类。最后大家如果想要了解更多java初识知识,敬请关注赋能网。