• 滚雪球学Java(40):解读Java面向对象编程中的方法和继承,打造可维护的代码库



    🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!



    前言

      在上一节中,我们学习了Java中的基本数据类型和运算符。在本节中,我们将深入了解Java面向对象编程的两个核心概念:方法和继承。方法和继承是Java编程中非常重要的概念,掌握它们可以让我们编写出更加清晰、可维护的代码。

    摘要

      本节将介绍Java中的方法和继承的概念,以及如何在代码中使用它们。我们将深入了解方法的定义、参数和返回值,以及继承的概念和使用。我们还将讨论如何编写可维护的代码库,以充分利用方法和继承的优势。

    正文

    1. 方法

    1.1 定义方法

      方法是指一组语句的有序集合,它们使用一些输入(参数)来执行一些操作,并产生一个输出(返回值)。在Java中,方法可以用来实现某些特定的任务或计算。

      定义一个方法需要使用关键字publicprivateprotected,它们表示方法的可见性。通常,我们使用public来定义方法,以便其他类可以使用它们。

    下面是一个例子:

    public int add(int a, int b) {
        int result = a + b;
        return result;
    }
    
    • 1
    • 2
    • 3
    • 4

      这个方法名为add,有两个参数ab,返回类型为int。在方法体中,我们定义了一个变量result,并将ab相加,最后返回结果。

    1.2 参数和返回值

      方法可以使用参数来获取输入,使用返回值来输出结果。参数和返回值都可以是Java中的任何数据类型,包括基本数据类型和自定义类型。

    下面是一个例子:

    public Student findStudentById(int id) {
        // 在数据库中查找id对应的学生记录
        // 如果找到,返回学生对象;否则,返回null
    }
    
    • 1
    • 2
    • 3
    • 4

      这个方法名为findStudentById,有一个参数id,其类型为int。方法返回类型为Student,即返回一个学生对象。在方法体中,我们可以使用输入的id在数据库中查找对应的学生记录,并返回相应的学生对象。

    1.3 方法重载

      在Java中,方法重载(Method Overloading)指定义两个或多个相同名字但不同参数的方法。方法重载可以使程序更加灵活,可以根据不同的情况选择不同的方法。

    下面是一个例子:

    public int add(int a, int b) {
        int result = a + b;
        return result;
    }
    
    public double add(double a, double b) {
        double result = a + b;
        return result;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

      这里定义了两个名字相同但参数类型不同的方法add。第一个方法接受两个整数作为参数,返回一个整数;第二个方法接受两个浮点数作为参数,返回一个浮点数。在调用方法add时,编译器会自动根据传入的参数类型选择正确的方法。

    2. 继承

    2.1 定义继承

      在面向对象编程中,继承是指一个类可以继承另一个类的属性和方法。继承可以使代码更加简洁、可读性更强,同时也可以提高代码的重用性。

    在Java中,可以使用关键字extends来实现继承。下面是一个例子:

    public class Animal {
        public void eat() {
            System.out.println("Animal eat something");
        }
    }
    
    public class Cat extends Animal {
        public void meow() {
            System.out.println("Cat meow");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

      在这个例子中,类Cat继承了类Animal的属性和方法。类Cat可以访问Animal中的所有public方法,包括方法eat。类Cat还定义了一个自己的方法meow,它可以在类中使用。

    2.2 继承的优点

      继承的主要优点之一是代码重用性。当两个类具有相似的属性和方法时,可以使用继承来避免代码重复。另一个优点是更好的可读性和可维护性。通过继承,可以更清晰地组织代码,使之易于理解和修改。

    2.3 子类和父类

      在继承关系中,继承属性和方法的类称为子类,被继承属性和方法的类称为父类。子类可以重写父类的方法,也可以定义自己的属性和方法。

    下面是一个例子:

    public class Animal {
        public void eat() {
            System.out.println("Animal eat something");
        }
    }
    
    public class Cat extends Animal {
        public void eat() {
            System.out.println("Cat eat fish");
        }
    
        public void meow() {
            System.out.println("Cat meow");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

      在这个例子中,类Cat重写了父类Animal中的方法eat。在调用Cat对象的eat方法时,将输出Cat eat fish

    3. 编写可维护的代码库

      编写可维护的代码库是Java编程中非常重要的一部分。下面我们将介绍五个原则,以帮助我们编写清晰、健壮、可维护的代码库。

    3.1 单一职责原则

      每个类都应该有自己的职责,即只做一件事情。这样可以使代码更加清晰,易于理解和修改。如果一个类承担了太多的职责,那么它就会变得复杂、难以维护。

    3.2 开闭原则

      开闭原则指一个类应该对扩展开放,对修改关闭。这意味着我们应该尽可能避免修改现有的代码,而是通过增加新的代码来扩展功能。

    3.3 依赖倒置原则

      依赖倒置原则指高层模块不应该依赖低层模块,两个都应该依赖其抽象。这意味着我们应该尽可能使用接口或抽象类来定义类之间的依赖关系,从而使得系统更加灵活、可扩展。

    3.4 接口隔离原则

      接口隔离原则指一个类不应该依赖它不需要的接口。这意味着我们应该尽可能将接口细化,从而避免类对不必要的接口产生依赖。

    3.5 迪米特法则

      迪米特法则(也称为最小知识原则)指一个类不应该知道太多关于其他类的信息。这意味着一个类应该只与直接相邻的类进行交互,而不应该与其它间接的类进行交互。

      迪米特法则强调了类之间的松耦合(Loose Coupling),即类应该尽量减少对其他类的依赖,减少类之间的相互影响,从而提高代码的可维护性、可扩展性和可复用性。

      迪米特法则可以帮助我们设计更加灵活、可维护的系统,同时也可以提高系统的性能和可靠性。在实际开发中,我们应该尽可能地遵守迪米特法则,减少类之间的耦合度,提高系统的可维护性和可扩展性。

    小结

      本文主要介绍了Java面向对象编程的一些基础概念和编写可维护的代码库的一些原则。在Java中,方法是面向对象编程最基本的操作,通过定义方法和方法重载,我们可以实现代码的复用和灵活性。而继承则是另一个重要概念,通过继承父类的属性和方法,我们可以在子类中进行增量开发,提高代码的效率和可读性。另外,编写可维护的代码库也非常重要,通过单一职责原则、开闭原则、依赖倒置原则、接口隔离原则和迪米特法则的实践,我们可以让代码更具可读性、可扩展性和可维护性,从而提高项目的整体质量以及开发效率。

    附录源码

      如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

    ☀️建议/推荐你


      无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

    📣关于我


    我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

  • 相关阅读:
    S-Clustr(影子集群) 重磅更新!黑入工业PLC设备!
    活动回顾 | 基于英特尔技术的端到端音视频优化
    冒泡排序(Bubble Sort)
    电脑文件自动备份到u盘,怎么实现?
    干货分享|使用 Istio 实现灰度发布
    智能算法 | MATLAB实现PSO粒子群算法函数寻优
    前端防止XSS攻击
    得数据者得天下!作为后端开发必备技能之一的MySQL,这份十多年经验总结的应用实战与性能调优我想你肯定是需要的!
    C语言达到什么水平才能从事单片机工作
    Rust-FFI复杂参数传递处理方式2--字符和字符串类型
  • 原文地址:https://blog.csdn.net/weixin_43970743/article/details/133139775