Day2-基础知识

news/2025/3/29 5:52:51/

面向对象

Java面向对象是一种编程范式,它以对象为基本单位,通过封装、继承和多态等机制来组织和管理代码。以下是我对Java面向对象的理解:

面向对象 ( Object Oriented ) 是将现实问题构建关系,然后抽象成 类 ( class ),给类定义属性和方法后,再将类实例化成 实例 ( instance ) ,通过访问实例的属性和调用方法来进行使用。面向对象有三大特性,封装、继承和多态。

封装:将属性和方法封装在类中。通过访问修饰符,可以控制对类的成员的访问权限,实现数据的隐藏和保护。隐藏内部细节,只暴露给外界访问方法。

继承:继承是一种代码重用和扩展的机制,它允许一个类继承另一个类的属性和方法。子类继承父类的特性,并可以在此基础上添加新的属性和方法,实现代码的复用和扩展。

多态性:多态性是指同一类型的对象在不同情况下表现出不同的行为。多态的前提是继承加重写,父类引用指向子类对象。抽象类与接口是实现多态的关键。抽象类是不能被实例化的类,它定义了一些抽象方法和非抽象方法,供子类实现或继承。接口是一种纯粹的抽象类型,它定义了一组方法的签名,实现类必须实现这些方法。多态性提高了代码的灵活性和可扩展性。

1.创建对象的方式有哪些

  1. new 对象
  2. 反射创建对象
  3. 反序列化
  4. clone

接口

被interface修饰的类叫接口,理解为是一种特色的类,由全局常量和公共的抽象方法所组成。通过implements来实现接口,接口与类之间可以多实现,接口与接口之间可以实现多继承,降低了耦合性

抽象类

Java中被abstract关键字修饰的方法叫抽象方法,只有声明没有方法体。
被abstract关键字修饰的类叫抽象类,可以不包含抽象方法,不可被实例化
子类继承抽象类之后,a.继续抽象,b.重写父类的所有抽象方法
abstract不能与private连用,子类无法重写
abstract不能与static连用,存在加载顺序的问题
abstract不能与final连用,无法重写

接口与抽象类的区别

实现:抽象类的子类使用extends来继承;接口必须使用implements来实现接口
构造函数:抽象类可以有构造函数;接口没有
实现数量:类可以实现很多个接口;但是只能继承一个抽象类
访问修饰符:接口中的方法默认使用public;抽象类中的方法可以是任意访问修饰符
何时使用
需要为一些类提供公共的实现代码时,应优先考虑抽象类
当注重代码的扩展性跟可维护性时,应当优先采用接口

重写 、 重载

1.重写
重写也可以看做覆盖,子类重新定义父类中具有相同名称和参数的虚函数,函数特征相同,但函数的具体实现不同,它主要在继承关系中出现
1.继承以后,子类就拥有了父类的功能。
2.在子类中,可以添加子类特有的功能,也可以修改父类原有的功能。
3.子类中方法的签名与父类完全一致时,会发生覆盖/复写的现象
4.父类的私有方法不能被重写
5.重写的要求是:两同两小一大

两同:方法名 参数列表完全一致
两小:
子类返回值类型小于等于父类的返回值类型
子类抛出异常小于等于父类方法抛出异常
一大:子类方法的修饰符权限要大于等于父类被重写方法的修饰符权限

2.重载
重载是函数名相同,参数列表不同,重载只是在类的内部存在,但是不能返回类型来判断。

1.重载overload与重写override的区别

重载:是一个类中的现象,同一个类中存在方法名相同,参数列表不同的方法
重写:是指建立了继承关系之后,子类对父类的方法不满意,可以重写,遵循两同两小一大的原则
重载的意义:是为了外界调用方法时方便,不管传入什么样的参数,都可以匹配到对应的同名方法
重写的意义:在不修改源码的情况下,进行功能的修改与拓展(OCP原则:面向修改关闭,面向拓展开放)


http://www.ppmy.cn/news/108197.html

相关文章

自回归文本生成:Bi-gram

Text AutoRegression : Bigrams 本文通过使用一小部分的中文语料,训练一个Bigrams模型,然后使用Bigrams模型以自回归的方式生成一段中文文本,纯粹为了学习和娱乐,因为Bigrams为了得到较好的结果一般需要数以亿计的词汇才可以&…

机器人中的数值优化(四)—— 线搜索求步长(附程序实现)

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

拿到字节跳动奖学金,入职字节跳动做科研,他们经历了什么?

前不久,第三届字节跳动奖学金计划已经正式启动。 自 2021 年起,字节跳动奖学金计划已经完成了两届评选,共有 19 位优秀学子荣获每人 10 万元人民币的奖学金。 在奖学金支持下,他们获得了新的科研项目费用、学术交流机会&#xff0…

牛客网语法篇刷题(C语言) — 基本类型

🤩本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C语言—语法篇》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,…

25岁转行做软件测试1年多了,写给还在迷茫的测试圈朋友

相比开发以后的职业生涯;我更看好软件测试的未来。 其次具有开发经验。对软件测试会有相当大的帮助,前面学了测试基础工具后,后期自动化提升会更快。这样才能更好的胜任软件测试工作。 最重要的是测试不是青春饭,和软件开发相比…

Vue中组件的几个重要点

1 单词命名组件名称 vue推荐的命名组件名称有以下几种: 首先看下组件有几个单词构成 单个单词 如果只有一个单词,那么建议全部小写,用的时候也是全部小写的,或者首字母大写 有人喜欢哪怕只有一个单词也首字母大写,…

电源转换器类型

1根据转换的形式分类,可分为: AC-AC(交流-交流)转换器:如交流电源变压器、变频器等。AC-DC(交流-直流)转换器:整流器。DC-DC(直流-直流)转换器。DC-AC(直流-交流)转换器:逆变器。2 根据转换的方法分类,可分为: 线性电源:使用工作在线性区的功率器件调整管,靠…

Redis 注册服务,自动启动

通常情况下我们可以通过 redis-server.exe 和配置文件启动redis服务 : 命令: redis-server.exe redis.windows.conf 另外开启一个命令行窗口 redis-cli.exe 即可做一些简单的操作命令行 但如果我们关闭控制台,那么Redis服务也跟随着一起关闭了&#x…