Java--包,访问修饰符,多态数组,==和equals,hashcode,toString

                同一个包里面不能有重复的类,不同的包可以有相同的类,包和包之间互不干涉。一个包下面有很多的类。

包的命名规则:

                只能包含数字,字母,下划线,小圆点,但不能用数字开头,不能是关键字或保留字。

包的命名规范:

                com.公司名.项目名.业务模块名

访问修饰符

                Java共有四种访问修饰符,用于控制方法和属性(成员变量)的访问权限(范围):

        1.公开级别:public修饰,对外公开。

        2.受保护级别:protected修饰,对子类和同一个包中的类公开。

        3.默认级别:没有修饰符号,向同一个包的类公开。

        4.私有级别:private修饰,只有类本身可以访问,不对外公开。

 

注意事项:

        只有默认的和public才能修饰类,并且遵循上述访问权限的特点。

属性重写问题:

        1.属性没有重写之说!属性的值看编译类型。

public class demo {public static void main(String[] args) {//生属性没有重写之说,属性的值看编译类型Base base = new Sub();      //向上转型System.out.println(base.count);     //10Sub sub = new Sub();System.out.println(sub.count);      //20}
}class Base{int count = 10;
}class Sub extends Base{int count = 20;
}

        2.instanceof 比较操作符,用于判断对象的运行类型是否为XX类型或XX类型的子类型

public class demo01 {public static void main(String[] args) {BB bb = new BB();System.out.println(bb instanceof BB);   //trueSystem.out.println(bb instanceof AA);   //true//aa是编译类型,BB是运行类型AA aa = new BB();System.out.println(aa instanceof AA);   //trueSystem.out.println(aa instanceof BB);   //trueObject object = new Object();System.out.println(object instanceof AA);   //falseString str = "hello";System.out.println(str instanceof Object);  //true}
}class AA {
}class BB extends AA {
}

动态绑定机制

                1.当调用对象方法时,该方法会和该对象的运行类型绑定。

                2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用。

多态数组

                数组的定义类型是父类类型,里面保存的实际元素类型是子类类型。

案例如下:

public class Persion {private String name;private int age;public Persion(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String say() {return name + "\t" + age;}}
public class Student extends Persion{private double score;public Student(String name, int age, double score) {super(name, age);this.score = score;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}@Overridepublic String say() {return super.say() + "\t" + "score=" + score;}public void study() {System.out.println("学生" + getName() + "在学习");}
}
public class Teacher extends Persion{private double salary;public Teacher(String name, int age, double salary) {super(name, age);this.salary = salary;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}//重写say方法@Overridepublic String say(){return super.say() + "\t" + "salary=" + salary;}public void teach() {System.out.println("老师" + getName() + "在教书");}
}
public class Test {public static void main(String[] args) {Persion[] persion = new Persion[5];persion[0] = new Persion("z", 1);persion[1] = new Student("x", 2, 66);persion[2] = new Student("c", 3, 77);persion[3] = new Teacher("v", 4, 2500);persion[4] = new Teacher("b", 5, 25000);for (int i = 0; i < persion.length; i++) {System.out.println(persion[i].say());if (persion[i] instanceof Student) {Student student = (Student) persion[i];student.study();} else if (persion[i] instanceof Teacher) {Teacher teacher = (Teacher) persion[i];teacher.teach();}}}
}

== 和 equals

                == 是一个比较运算符

1.既可以判断基本类型,也可以判断引用类型

2.如果是基本类型,判断的是值是否相等

3.如果是引用类型,判断的是地址是否相等,即判断是不是同一个对象。

                equals 是Object类中的方法

默认判断的是地址是否相等,子类往往重写该方法,用于判断内容是否相等

hashCode

        返回该对象的哈希码值,支持此方法是为了提高哈希表的性能。

1.提高具有哈希结构的容器的效率

2.两个引用,如果指向的是同一个对象,则哈希值肯定是一样的。

3.两个引用,如果指向的是不同对象,则哈希值是不一样的。

4.哈希值主要根据地址号来的,不能完全将哈希值等价于地址。

toString 方法

                基本介绍:

        默认返回:全类名(包名 + 类名) + @ + 哈希值的十六进制。子类往往重写toString方法,用于返回对象的属性信息。

        重写 toString 方法,打印对象或拼接对象时,都会自动调用该对象的toString形式。

        当直接输出一个对象时,toString 方法会被默认的调用,比如:

System.out.println(monster);        就会默认调用 monster.toString()

finalize方法

        当对象被回收时,系统自动调用该对象的 finalize 方法。子类可以重写该方法,做一些释放资源的操作。

        什么时候被回收:当某个对象没有任何引用时,则 jvm 就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象之前,就会调用 finalize 方法。

Ending: 

        OK,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~ 

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

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

相关文章

2_js运算符与流程控制语句

1. 运算符的应用 1.1 算数运算符 浮点数的精度问题 浮点数值的最高精度是17位小数&#xff0c;不要直接判断两个浮点数是否相等。 var result 0.1 0.2; // 结果不是 0.3&#xff0c;而是&#xff1a;0.30000000000000004 console.log(0.07 * 100); // 结果不是 7&#…

C++学习笔记(十五)

继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系&#xff0c;例如下图中&#xff1a; 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承的技术&#xff0c;减少重…

3 - Electron app BrowserWindow对象-关于窗口

优雅的打开应用~ 当加载缓慢&#xff0c;打开应用的一瞬间会出现白屏&#xff0c;以下方法可以解决 const mainWindow new BrowserWindow({ show: false }) mainWindow.once(ready-to-show, () > {mainWindow.show() }) 设置背景颜色 const win new BrowserWindow({ b…

MongoDB的原子操作findAndReplace、findOneAndDelete和deleteMany

本文主要介绍MongoDB的原子操作findAndReplace、findOneAndDelete和deleteMany。 目录 MongoDB的原子操作一、findAndReplace二、findOneAndDelete三、deleteMany MongoDB的原子操作 MongoDB的原子操作指的是在单个操作中对数据库的数据进行读取和修改&#xff0c;并确保操作是…

selenium css定位

selenium-css定位 element_css driver.find_element(By.CSS_SELECTOR, css表达式)css定位说明 selenium中的css定位&#xff0c;实际是通过css选择器来定位到具体元素&#xff0c;css选择器来自于css语法 css定位优点 语法简洁对比其他定位方式&#xff0c;定位效率更快对…

高防服务器防御靠谱吗?

​  随着互联网的普及和信息技术的不断发展&#xff0c;网络安全问题日益突出。高防服务器作为一种专业的网络安全设备&#xff0c;在防御网络攻击方面扮演着越来越重要的角色。然而&#xff0c;高防服务器是否靠谱&#xff0c;是否能够有效地防御各种网络攻击&#xff0c;一…

CUMT--Java--JDBC编程

目录 一、JDBC简介 二、数据库访问 1、加载数据库驱动 2、建立数据连接 3、创建Statement对象 4、执行SQL语句 5、访问结果集 三、MetaData接口 1、DatabaseMetaData接口 2、ResultSetMetaData接口 四、事务 1、JDBC中的事务 2、保存点 3、批量更新 一、JDBC简…

【JAVA】重力反弹,反弹高次一次比一次低

本来是想实现泡泡屏保(javascript实现漂亮的气泡碰撞效果(Chrome浏览器下更佳) 下载-脚本之家)的&#xff0c;还未实现 import javax.swing.*; import java.awt.*; import java.util.LinkedList; import java.util.Random;class Bubble {public static Image image;public int…

轮滑加盟培训机构管理系统源码开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 随着轮滑运动的普及和市场需求的增加&#xff0c;轮滑加盟培训机构逐渐兴起。这些机构面临着学员管理、课程排班、教师管理等多方面的挑战。为了提高管理效率和服务质量&#xff0c;需要开发一套专门针对轮滑加盟培训…

FormData文件上传多文件上传

一、简介 ​ 通常情况下&#xff0c;前端在使用post请求提交数据的时候&#xff0c;请求都是采用application/json 或 application/x-www-form-urlencoded编码类型&#xff0c;分别是借助JSON字符串来传递参数或者keyvalue格式字符串&#xff08;多参数通过&进行连接&#…

大数据分析22、23真题回忆

2022 学长描述 1. 一个很简单的据估计 2. 算一个决策树 3. Cypher图 4.Hadoop和Spark的区别 2023 真题回忆 1. 大数据分析的定义 说出大数据分析三个层次 2.大数据分析流程 预处理部分包含哪几个步骤 3.Spark核心部件和应用库有哪些 并简要说明功能 4. 主成分分析和因…

HTML5+CSS3小实例:纯CSS实现锚点平滑过渡

实例:纯CSS实现锚点平滑过渡 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…

【无语】Microsoft Edge 浏览器不显示后台返回的数值数据

Microsoft Edge 禁用 JSON 视图 写在前面禁用 JSON 视图 写在前面 遇到一个有意思的事情&#xff0c;在用 Microsoft Edge 浏览器发送请求测试时发现&#xff0c;后端返回的数值数据没有正常展示&#xff0c;而是类似查看源码的结果&#xff0c;只显示了一个行号1&#xff0c;…

最优化理论复习--对偶单纯形方法及灵敏度分析

对偶单纯形方法 定义&#xff1a;设 x ( 0 ) x^{(0)} x(0) 是(L)问题的基本解&#xff08;不一定是可行解&#xff08;极点&#xff09;&#xff09;&#xff0c;如果它的对偶问题的解释可行的&#xff0c;则称 x ( 0 ) x^{(0)} x(0) 为原问题的对偶可行基本解 从而衍生出结…

Chappyz 生态迎重磅利好:多链应用程序启动、100% 收入共享计划开启

“首款由人工智能驱动的社区建设工具 Chappyz&#xff0c;即将在 12 月 21 日推出全新的多链平台并向社区开放&#xff0c;同时制定了生态收入 100% 向 Stakers 共享的计划&#xff0c;这不仅是 Chappyz 生态的一个全新进展&#xff0c;也是 Chappyz 生态发展的重磅利好。” 构…

0137 - 跳转控制语句 break、continue、return

文章目录 1 break1.1 基本介绍1.2 基本语法1.3 注意事项和细节说明 2 continue2.1 基本介绍2.2 基本语法 3 return 1 break 1.1 基本介绍 break 语句用于终止某个语句块的执行&#xff0c;一般使用在 switch 或者循环[for , while , do-while]中 1.2 基本语法 { ……break…

新时代体育场馆的未来之路——气膜体育馆

近年来&#xff0c;我国正全面贯彻实施全民健身国家战略&#xff0c;秉持“发展群众体育&#xff0c;服务健康中国”的理念&#xff0c;深入推动群众参与的体育活动&#xff0c;努力实现全民健身与全民健康的深度融合发展。在这一大潮中&#xff0c;体育场馆建设成为业内的一项…

tensorflow入门

一、怎样入手TensorFlow TensorFlow是一个用于机器学习和深度学习的开源框架&#xff0c;它提供了一种灵活的方式来构建和训练神经网络模型。以下是一些TensorFlow框架入门的建议&#xff1a; 学习Python语言&#xff1a;TensorFlow主要使用Python语言进行开发&#xff0c;因此…

欧美电商平台Depop如何入驻?

对标美国二手闲鱼平台Mercia,PoshMark、东南亚Etsy&#xff0c;Depop是英国的一个面向创意人群的二手时尚市场&#xff0c;类似于Instagram&#xff0c;但更专注于买卖二手服装、配饰和艺术品。 有研究显示,由于购物预算减少,高达65%的受访者表示乐意在圣诞节购买或收到二手礼…

JDK bug:ciObjectFactory::create_new_metadata:原因完全解析

文章目录 1、问题2.详细日志2.关键日志3.结论4.JDK&#xff1a;bug最终bug链接&#xff1a; 京东遇到过类似bug各位大佬如果有更详细的解答可以留言。 1、问题 服务不通&#xff0c;接口404&#xff0c;查看日志有一下截图&#xff0c;还有一个更详细的日志 2.详细日志 # #…