Day15 面向对象进阶——接Day14

Day15 面向对象进阶——接Day14

文章目录

  • Day15 面向对象进阶——接Day14
    • 一、访问修饰符
    • 二、Object
    • 三、深入String的equals()方法
    • 四、final

一、访问修饰符

1、含义:修饰类、方法、属性,定义使用的范围

2、经验:
2.1.属性一般使用private修饰,因为封装
2.2.属性或者方法如果需要被子类使用,一般使用protected修饰
2.3.方法如果不需要被外界使用,一般使用private修饰

2.4.方法一般使用public修饰

注意:1.修饰类只能使用public和默认的访问权限
2.修饰方法和属性可以使用所有的访问权限

访问修饰符本类本包其他包子类其他包
privateOK
默认的OKOK
protectedOKOKOK
publicOkOKOKOk

二、Object

​ 1、含义:基类也叫做超类,Object是所有类的祖先类

​ 2、注意:如果一个类没有明确继承的父类,默认继承Object

​ 3、Object方法的使用

​ 3.1. equals:比较两个对象内存地址是否相同

​ 3.2. hashCode:获取对象的hash值

​ 3.3. getClass:获取类的字节码文件对象

​ 3.4. toString:获取对象的字符串表示

​ 4、标杆作用:Object作为所有类的父类,定义了几个方法,方便子类去重写

​ 4.1. equals的标杆作用:比较两个对象是否相同,不同的对象比较规则不一样,所以子类重写即可

​ 4.2. toString的标杆作用:每个子类都有不同的属性,重写toString直接打印该对象中所有的属性,方便观察数据

​ 5、举例:

class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;
}@Override
public String toString() {return "Person{name='" + name + "', age=" + age + "}";
}@Override
public boolean equals(Object obj) {if (this == obj) {return true;}if (obj == null || getClass() != obj.getClass()) {return false;}Person person = (Person) obj;return age == person.age && name.equals(person.name);
}@Override
public int hashCode() {return Objects.hash(name, age);
}}public class Main {public static void main(String[] args) {Person person1 = new Person("Alice", 30);Person person2 = new Person("Bob", 25);// 使用toString方法System.out.println(person1.toString());// 使用equals方法比较两个对象System.out.println("Are person1 and person2 equal? " + person1.equals(person2));// 使用hashCode方法获取对象的哈希码System.out.println("HashCode of person1: " + person1.hashCode());System.out.println("HashCode of person2: " + person2.hashCode());
}}

分析:在这个示例中,Person类重写了toStringequalshashCode方法,这些方法都是从Object类继承而来的。在Main类中,我们创建了两个Person对象,并演示了如何使用toString方法打印对象的字符串表示,使用equals方法比较两个对象是否相等,以及使用hashCode方法获取对象的哈希码。

通过重写Object类的方法,我们可以根据自定义类的需求来定制这些方法的行为,从而更好地管理对象的字符串表示、相等性比较和哈希码计算。

三、深入String的equals()方法

​ 1、 含义:在Java中,String类重写了equals()方法,用于比较两个字符串对象的内容是否相等。

​ 2、 面试题:String是如何比较两个字符串是否相同的
​ 2.1.比较两个字符串的地址是否相同
​ 2.2.比较两个字符串的字符个数
​ 2.3.循环比较字符的Unicode码

public class Test01 {public static void main(String[] args) {String str1 = new String("abc");String str2 = new String("abc");System.out.println(str1 == str2);//falseSystem.out.println(str1.equals(str2));//trueSystem.out.println(str1);System.out.println(str2);System.out.println("-------------------------------");MyString m1 = new MyString("abc");MyString m2 = new MyString("abc");System.out.println(m1 == m2);//falseSystem.out.println(m1.equals(m2));//true//注意:打印对象,默认调用toString()System.out.println(m1);System.out.println(m2);}
}
public class MyString {private char[] value;public MyString(String original) {//"abc"//['a','b','c']value = original.toCharArray();//将字符串转换为字符数组}@Overridepublic boolean equals(Object obj) {if(this == obj){return true;}MyString my = (MyString) obj;char[] v1 = this.value;char[] v2 = my.value;//比较字符长度if(v1.length != v2.length){return false;}for (int i = 0; i < v1.length; i++) {//比较字符的Unicode码是否相同if(v1[i] != v2[i]){return false;}}return true;}@Overridepublic String toString() {return String.valueOf(value);//将字符数组转为字符串}
}

四、final

1、含义:最终

2、作用:

​ 2.1. 修饰类:该类不能被继承

​ 2.2. 修饰方法:该方法不能被重写

​ 2.3. 修饰变量:变成常量,不能重新赋值

注意:常量的命名规则:全大写,单词之间用下划线隔开

常量的生命周期:存在常量池中,直到项目结束才会被销毁

3、经验:
如果不想让该类有子类(不想该类有扩展),就是用final修饰
final和static一般一起修饰属性,该属性变成静态常量
Object的equals内存图Object的equals内存图

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

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

相关文章

JavaScript进阶:js的一些学习笔记

文章目录 1. js作用域2. 函数3. 解构赋值 1. js作用域 作用域规定了变量能够呗访问的范围&#xff0c;离开这个范围&#xff0c;这个变量就不能够被访问到。 局部作用域&#xff1a;可以分为函数作用域和块作用域 块作用域&#xff0c;let 声明会产生块级作用域&#xff0c;va…

武汉星起航:秉承客户至上服务理念,为创业者打造坚实后盾

在跨境电商的激荡浪潮中&#xff0c;武汉星起航电子商务有限公司一直秉持着以客户为中心的发展理念&#xff0c;为跨境创业者提供了独特的支持和经验积累&#xff0c;公司通过多年的探索和实践&#xff0c;成功塑造了一个以卖家需求为导向的服务平台&#xff0c;为每一位创业者…

window python开发环境搭建- Anaconda

window python开发环境搭建- Anaconda 下载Anacnoda配置Anconda验证Anaconda是否安装成功验证 conda 是否安装成功验证 pip 是否安装成功验证 python 是否安装成功 配置镜像源conda 镜像源pip 镜像源 pip 常用命令conda 常用命令 下载Anacnoda anacoda官网地址 https://www.an…

hive库表占用空间大小的命令

1、查每个hive表占用的空间大小 hdfs dfs -du -h /user/hive/warehouse 2、按占用空间大小降序排列 hdfs dfs -du /user/hive/warehouse/ipms.db | sort -nr 3、查某一个分区占用空间大小&#xff08;单位G) hadoop fs -ls /user/hive/warehouse/ipms.db/dw_ft_se_nt_u_gen…

如何在vscode中误删了文件怎么办

一、问题描述 在vscode中误删了文件&#xff0c;遇到了好几次这种情况&#xff0c;今天在网上看到了解决方案&#xff0c;记录一下。 二、解决方案 快捷键&#xff1a;ctrlshiftp 输入命令Find Entry to Restore 既可查看过去文件历史&#xff0c;从里面就能找到删除的文件。

【vue在主页中点击主页面如何弹出一个指定某个页面的窗口】

【vue在主页中点击主页面跳转到某个页面的操作完整过程】 1.首先在主页面中加入一个卡槽用于展示弹出的窗口 代码如下&#xff1a; <el-dialog :visible.sync"dialogVisible1" :close-on-click-modal"false" :title"title" class"dial…

代码随想录算法训练营第八天|344. 反转字符串

344. 反转字符串 已解答 简单 相关标签 相关企业 提示 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#…

[LeetCode][LCR 194]二叉树的最近公共祖先

题目 LCR 194. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 例如&#xff0c;给定如下二叉树: root [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 1 输出: 3 解释: 节点 5 和节点 1 的最…

#微信小程序(轮播图以及开发方法)

1.IDE&#xff1a;微信开发者工具 2.实验&#xff1a;轮播图以及正确的开发方法 &#xff08;1&#xff09;有HTML&#xff0c;CSS&#xff0c;javascript基础即可 &#xff08;2&#xff09;写界面一定要查看开发手册&#xff0c;这是微信小程序比较好的地方&#xff0c;由于…

QT----基于QT的人脸考勤系统(未完成)

目录 1 编译opencv库1.1 下载源代码1.2 qt编译opencv1.3 执行Cmake一直卡着data: Download: face_landmark_model.dat 2 编译SeetaFace2代码2.1 遇到报错By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has2.2遇到报错Model missing 3 测试…

机试:成绩排名

问题描述: 代码示例: #include <bits/stdc.h> using namespace std;int main(){cout << "样例输入" << endl; int n;int m;cin >> n;int nums[n];for(int i 0; i < n; i){cin >> nums[i];}// 排序for(int i 0; i < n; i){//…

IP地址无所遁形!试试这个3k星热门开源查询神器!

在日常开发中&#xff0c;我们经常需要查询IP地址的位置信息&#xff0c;比如&#xff1a; 网站统计&#xff1a;统计用户的来源地&#xff0c;了解访问者分布情况&#xff1b;安全防护&#xff1a;根据IP地址判断用户是否来自风险地区&#xff0c;加强安全防护措施&#xff1…

13.7 Map 接口(血干JAVA系列)

这里写目录标题 13.7.1 Map接口简介13.7.2 Map.Entry接口简介13.7.3 Map接口的常用子类1.新的子类&#xff1a;HashMap2.相关操作实例(1)实例操作1——向集合中增加和取出内容【例13.26】增加和取得内容 (2)实例操作2------------ 判断指定的key或value是否存在【例13.27】判断…

VMware16如何克隆虚拟机

目录 克隆虚拟机方式一(在Windows上复制粘贴)克隆虚拟机方式二(使用VM的克隆操作 克隆之前需要关机)修改克隆机的IP和主机名虚拟机快照虚拟机的迁移和删除 克隆虚拟机方式一(在Windows上复制粘贴) 直接拷贝一份你已经安装好的虚拟机 复制到目的主机上 然后用VM就能打开它 甚至…

索引覆盖和索引下推

索引覆盖和索引下推 索引覆盖&#xff08;Covering Index&#xff09;&#xff1a; 在数据库查询优化中&#xff0c;当一个索引包含了SQL查询语句所需要的全部列时&#xff0c;数据库可以直接使用索引来获取所有数据&#xff0c;而无需回表访问实际的数据行&#xff0c;这就实…

egg.js学习记录

1.创建egg项目并启动后端服务器 pnpm create egg //创建项目 //选择simple就行 pnpm i //下载插件 pnpm run dev //运行项目 2.安装跨域依赖和数据库依赖 pnpm i egg-cors //跨域依赖 pnpm i egg-mysql //数据库依赖 pnpm i egg-scripts //部署 3.修改配置…

全视智慧机构养老解决方案,以科技守护长者安全

2024年2月28日凌晨1时许&#xff0c;在上海浦东大道的一家养护院四楼杂物间内发生了一起火灾事故。尽管火势不大&#xff0c;过火面积仅为2平方米&#xff0c;但这场小火却造成了1人死亡和3人受伤的悲剧。这一事件再次提醒我们&#xff0c;养老院作为老年人聚集的场所&#xff…

敏捷开发精准估算

估算并非易事。对软件开发人员来说&#xff0c;估算堪称是最难的工作之一。估算必须考虑所有能帮助产品负责人做出影响整个团队和业务决策的因素。因此&#xff0c;从开发到高管都为它焦头烂额也不足为奇&#xff0c;但这种做法是错误的。敏捷估算并不是什么性命攸关的大事&…

人人站CMS后台登不进去解决方案(已解决)

公司有一个网站使用的是人人站CMS&#xff0c;最近发现后台登录不进去&#xff0c;有以下报错 发生以下错误: file get contents(http://www.rrzcms.com/Public/cms/config/config.ison): failed to open stream: HTTP reguest failed! 请求的URL导致内部服务器错误。 如果您反…

win11文件共享失败的问题

前言 windows 11连接公司内部服务器报错&#xff0c;报错如下&#xff1a; 因为文件共享不安全&#xff0c;所以你不能连接到文件共享。此共享需要过时的SMB1协议&#xff0c;而此协议是不安全的&#xff0c;可能会使你的系统遭受攻击。你的系统需要SMB2或更高版本。有关如何解…