Java中对继承的学习

继承


继承的概念

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:

class 父类 {
}

class 子类 extends 父类 {
}

复制代码
public class Animal { 
    private String name;   
    private int id; 
    public Animal(String myName, int myid) { 
        //初始化属性值
    } 
    public void eat() {  //吃东西方法的具体实现  } 
    public void sleep() { //睡觉方法的具体实现  } 
} 
 
public class Penguin  extends  Animal{ 
}

为什么需要继承

代码存在重复,导致代码量大且臃肿,而且维护性不高(主要表现是后期需要修改的时候,需要修改很多的代码,容易出错)。要从根本上解决这两段代码的问题,就需要继承。

继承的特性

  • 子类拥有父类非 private 的属性、方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法。
  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

继承的优点和缺点

优点

  1. 代码复用
    继承允许子类复用父类的代码,这避免了在多个类中编写重复代码的需要。如果多个类共享某些共同的行为或属性,可以通过将它们放在一个公共的父类中来实现。

  2. 扩展性
    子类可以在继承父类的基础上添加新的属性和方法,或者覆盖(Override)父类中的方法以实现不同的行为。这使得子类能够根据需要定制和扩展功能。

  3. 多态性
    继承是实现多态性的基础之一。多态性允许我们以统一的接口使用不同的对象,这些对象可以是同一类型的不同子类实例。

  4. 维护性
    当需要修改某个类的行为时,如果该类被其他多个类继承,则只需在父类中修改即可,而无需在每个子类中分别修改。这降低了维护成本,提高了代码的可维护性。

缺点

  1. 紧耦合
    继承可能导致类之间的紧耦合。如果子类过度依赖父类的实现细节,那么当父类发生变化时,子类可能会受到影响,这增加了代码的脆弱性。

  2. 层次结构僵化
    继承结构一旦确定,就很难在不破坏现有代码的情况下进行修改。例如,如果需要在两个不相关的类之间共享某些功能,但这两个类已经通过继承与其他类建立了关系,那么添加新的共享功能可能会变得复杂。

  3. 过度继承
    过度使用继承(如创建过深的继承层次结构)可能会导致代码难以理解和维护。此外,这也可能导致代码复用过度,因为子类可能会继承一些不需要的属性和方法。

  4. 限制了灵活性
    在某些情况下,使用组合(Composition)而不是继承可能更加灵活。组合允许对象在运行时动态地获得其他对象的行为和属性,而继承则是一种静态的、编译时的关系。

  5. 初始化顺序问题
    在复杂的继承结构中,子类对象的初始化可能依赖于父类对象的完全初始化。如果子类在父类完全初始化之前就尝试访问父类的某些资源或方法,可能会导致错误。

posted @   BingBing爱化学-04044  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示