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


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


文章目录

  • 前言
  • 摘要
  • 正文
    • 1. 方法
      • 1.1 定义方法
      • 1.2 参数和返回值
      • 1.3 方法重载
    • 2. 继承
      • 2.1 定义继承
      • 2.2 继承的优点
      • 2.3 子类和父类
    • 3. 编写可维护的代码库
      • 3.1 单一职责原则
      • 3.2 开闭原则
      • 3.3 依赖倒置原则
      • 3.4 接口隔离原则
      • 3.5 迪米特法则
    • 小结
    • 附录源码
  • ☀️建议/推荐你
  • 📣关于我


前言

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

摘要

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

正文

1. 方法

1.1 定义方法

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

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

下面是一个例子:

public int add(int a, int b) {int result = a + b;return result;
}

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

1.2 参数和返回值

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

下面是一个例子:

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

  这个方法名为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;
}

  这里定义了两个名字相同但参数类型不同的方法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");}
}

  在这个例子中,类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");}
}

  在这个例子中,类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电子书籍、简历模板等海量资料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/138149.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ajax学习笔记

目录 Ajax介绍Ajax概述同步异步 原生Ajax演示AxiosAxios的基本使用Axios快速入门Axios请求方法别名Axios案例 Ajax介绍 Ajax概述 我们前端页面中的数据应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢&…

Ansible 自动化运维工具部署主从数据库+读写分离

文章目录 Ansible 自动化运维工具部署主从数据库读写分离一、主从复制和读写分离介绍二、准备工作(1)节点规划(2)修改主机名(3)免密(4)配置IP映射(5)安装ansi…

【二叉树】二叉树展开为链表-力扣 114 题

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

springcloud3 分布式事务解决方案seata之XA模式4

一 seata的模式 1.1 seata的几种模式比较 Seata基于上述架构提供了四种不同的分布式事务解决方案: XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入 TCC模式:最终一致的分阶段事务模式,有…

Qt QWebEngineView 忽略https验证

背景 Qt版本:5.9.6 Qt通过WebEngineView加载网页时,如果遇到https且证书未认证,会导致页面加载失败。一般情况下内部web服务器的http是证书都是自签的,无法通过验证,但也有其他的解决方案。 重新编译 修改Qt的源码…

点云滤波--一种点云异常值检测和稳健法线估计方法

文章目录 1写在前面的话2outlier检测算法2.1获取最大集合(Getting the maximum consistent set)2.2异常值检测2.3估计法线和曲率 3实验结果3.1模拟数据3.2真实数据3.3 自己实测结果: 1写在前面的话 论文针对激光点云提出了一种基于平面拟合的…

虚拟DOM与diff算法

虚拟DOM与diff算法 snabbdom虚拟DOMdiff算法 snabbdom 是什么:snabbdom是著名的虚拟DOM库,是diff算法的鼻祖,Vue源码借鉴了snabbdom 虚拟DOM 是什么:本质上是存在内存里的 JavaScript 对象 作用:用来描述真实DOM的层…

科技云报道:分布式存储红海中,看天翼云HBlock如何突围?

科技云报道原创。 过去十年,随着技术的颠覆性创新和新应用场景的大量涌现,企业IT架构出现了稳态和敏态的混合化趋势。 在持续产生海量数据的同时,这些新应用、新场景在基础设施层也普遍基于敏态的分布式架构构建,从而对存储技术…

【MySQL】 MySQL的增删改查(进阶)--壹

文章目录 🛫数据库约束🌴约束类型🎋NOT NULL约束🎍UNIQUE:唯一约束🌳DEFAULT:默认值约束🎄PRIMARY KEY:主键约束🍀FOREIGN KEY:外键约束&#x1f…

Redis之list类型

文章目录 Redis之list类型1. 列表添加/弹出元素2. 查看列表3. 获取列表中元素的个数4. 删除列表中指定的值5. 获取/指定元素的值6. 向列表中插入元素7. 删除指定索引范围之外的所有元素8. 将元素从一个列表转移到另一个列表9. 应用场景9.1 队列9.2 类似微信上订阅公众号&#x…

【C++】unordered_map与unorder_set的封装(哈希桶)

文章目录 前言一、模板参数的改造二、模板的特例化操作三、仿函数的妙用四、unordered迭代器基本操作1.const迭代器注意:2.HashTable与HTIterator的冲突 五、迭代器的构造问题六、完整代码1.hash_bucket.h2.unordered_set.h3.unordered_map.h 前言 我们开辟一个指针…

Docker网络问题:容器无法访问外部网络

Docker网络问题:容器无法访问外部网络 😟 Docker网络问题:容器无法访问外部网络 😟摘要 🤔引言 🌐正文 🤓为什么容器无法访问外部网络? 😕1. 网络配置错误2. 防火墙设置3…

二分类问题的解决利器:逻辑回归算法详解(一)

文章目录 🍋引言🍋逻辑回归的原理🍋逻辑回归的应用场景🍋逻辑回归的实现 🍋引言 逻辑回归是机器学习领域中一种重要的分类算法,它常用于解决二分类问题。无论是垃圾邮件过滤、疾病诊断还是客户流失预测&…

中级职称评审论文重要吗?是不是必须要论文呢?

现在评中级职称职称对论文有什么要求?没有论文可以参与职称评审吗? 建筑中级职称怎么评?那自然是从多方面来考核人才是否具备了评中级工程师的能力,职称论文就是考核的标准之一。 甘建二告诉你,现在评职称论文是很重…

新增MariaDB数据库管理、支持多版本MySQL数据库共存,1Panel开源面板v1.6.0发布

2023年9月18日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.6.0版本。 在这个版本中,1Panel新增MariaDB数据库管理;支持多版本MySQL数据库共存;支持定时备份系统快照和应用商店中已安装应用;支持为防火墙…

优维低代码实践:图片和搜索

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…

字符串函数----篇章(1)

目录 补上章缺失的两道题 七.笔试题(7) 八.笔试题(8) 一.字符串函数 ( 1 )----strlen函数 二.字符串函数 ( 2 )----strcpy函数 2-1模拟实现strcpy 三.字符串函数 ( 3 )----strcmp函数 ​编辑 3-1模拟实现strcmp 四.字符串函…

phpstudy脚本编写 和sql注入编写

1.phpstudy编写 2.sql注入编写

C++之template可变模板参数应用总结(二百二十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

自动化测试:yaml结合ddt实现数据驱动!

在pythonunittestseleniumddt的框架中,数据驱动常见有以下几种方式实现: Csv/txtExcelYAML 本文主要给大家介绍测试数据存储在YAML文件中的使用场景。首先先来简单介绍一下YAML。 1. 什么是YAML 一种标记语言类似YAML,它实质上是一种通用…