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);     //10
        Sub 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);   //true
        System.out.println(bb instanceof AA);   //true

        //aa是编译类型,BB是运行类型
        AA aa = new BB();
        System.out.println(aa instanceof AA);   //true
        System.out.println(aa instanceof BB);   //true

        Object object = new Object();
        System.out.println(object instanceof AA);   //false

        String 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;
    }

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Databend 开源社区上榜 2023 年度 OSCHINA 优秀开源技术团队

2023 年 12 月 8 日&#xff0c;OSCHINA 对其平台上众多认证的官方技术团队和开源社区进行了全面评估&#xff0c;并颁发了“ 2023 年度优秀开源技术团队”奖项&#xff0c;以表彰各团队在推动中国开源生态系统发展方面所展现的创新能力和显著贡献。 在这一评选中&#xff0c;…

【开源软件】2022年最佳开源软件-排名第一:AlmaLinux

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

网络编程 DAY6 作业

1.使用数据库创建一个工人信息库&#xff0c;包含工号&#xff08;主键&#xff09;、姓名、年龄、薪资 2.添加三条工人信息&#xff08;可以完整信息&#xff0c;也可以非完整信息&#xff09; 3.修改某一个人的薪资&#xff08;确定的一个&#xff09; 4.展示出工资在10000到…

C++ Qt开发:StringListModel字符串列表映射组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍QStringListModel字符串映射组件的常用方法及…

智慧工地一体化云平台APP源码:监管端、工地端、危大工程、智慧大屏、物联网、塔机、吊钩、升降机

智慧工地管理平台是依托物联网、互联网建立的大数据管理平台&#xff0c;是一种全新的管理模式&#xff0c;能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。 智慧工地源码技术说明 1.微服务架构JavaSpring Cloud UniApp MySql 2.支持多端展示&#xff08;PC端、手…

istio 认证:对等身份认证+服务请求认证

istio 中有两种不同的身份认证方式&#xff1a; 基于 mTLS 的对等身份认证 PeerAuthentication基于 JWT&#xff08;JSON Web Token&#xff09;令牌的服务请求认证 RequestAuthentication 对等身份认证 PeerAuthentication 概念 提供服务到服务的认证服务网格的主要场景就…

循环神经网络中的梯度消失或梯度爆炸问题产生原因分析

循环神经网络中&#xff0c;通过时间反向传播&#xff08;backpropagation through time&#xff0c;BPTT&#xff09;实际上是循环神经网络中反向传播技术的一个特定应用。 &#xff08;1&#xff09;它要求我们将循环神经网络的计算图以此展开一个时间步&#xff0c;以获得模…

Redis BitMap(位图)

这里是小咸鱼的技术窝&#xff08;CSDN板块&#xff09;&#xff0c;我又开卷了 之前经手的项目运行了10多年&#xff0c;基于重构&#xff0c;里面有要实现一些诸如签到的需求&#xff0c;以及日历图的展示&#xff0c;可以用将签到信息存到传统的关系型数据库&#xff08;MyS…

BBS项目--登录

BBS阶段性测试总要求 django登录报错 Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。 原因分析&#xff1a;出现这种情况在Windows中很常见&#xff0c;就是端口被占用 解决措施&#xff1a;这时我们只需改一下端口便可以了 登录前端页面(HTML…

网络技术基础与计算思维实验教程_3.2_无线局域网与以太网互连实验

实验内容 实验目的 实验原理 实验步骤 打开上一个实验的文件 切换到物理工作区 导航到城市家园 放置一台交换机 和两台台式机 直通线连接 把AP0链接到交换机的端口3上 切换回逻辑工作区 选择DHCP自动获取网络信息 PC1同样 然后 验证通信过程 laptop0和PC0 laptop1和PC1 验…

AcWing算法进阶课-1.1.2Dinic/ISAP求最大流

算法进阶课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图&#xff0c;并给定每条边的容量&#xff0c;边的容量非负。 图中可能存在重边和自环。求从点 S S S 到点 T T T 的最大流。 输入格式 第一行包…

CentOS6.10 卸载MySQL8.0.34升级至8.0.35

准备要更新的MySQL安装包,下载地址:MySQL :: Download MySQL Community Server 查看当前MySQL版本 备份数据库 mysqldump -uroot -p -B > /opt/backup/20231220_mysql.sql 检查备份文件 查看所有服务项: service --status-all 可以看到我们注册的MySQL服务是mysqld 停止…

2023年中国数据智能管理峰会(DAMS上海站2023)-核心PPT资料下载

一、峰会简介 数据已经成为企业的核心竞争力&#xff01;谁掌控数据、更好的利用数据、实现资产化&#xff0c;谁就会真正率先进入大数据时代。 1、数据智能管理趋势和挑战 在峰会上&#xff0c;与会者讨论了数据智能管理的最新趋势和挑战。随着数据量的不断增加&#xff0c…

FMCW雷达仿真:基于L形阵列4D点云获取

摘要&#xff1a;本期内容为3D点云目标获取的延续工作&#xff0c;在距离、速度、方位角估计的基础上&#xff0c;通过设计L型阵列结构&#xff0c;进一步实现目标俯仰角的估计&#xff0c;最终实现目标4-D点云的获取。首先&#xff0c;通过中频信号建立仿真信号模型&#xff0…

【Chrome】ERR_SSL_PROTOCOL_ERROR问题

文章目录 前言一、下载二、使用步骤总结 前言 Edge升级最新版后&#xff0c;有的https访问不了&#xff0c;报如下错误 发现新版Chrome以及Chromium内核访问nginx ssl时报错&#xff0c;顺着这个思路接着查看到大佬的结论&#xff1a;服务器nginx使用的openssl版本过低&#…

MyBatis关联查询(一、一对一查询)

MyBatis关联查询&#xff08;一、一对一查询&#xff09; 需求&#xff1a;查询账户信息&#xff0c;关联查询用户信息。 分析&#xff1a;因为一个账户信息只能供某个用户使用&#xff0c;所以从查询账户信息出发关联查询用户信息为一对一查询。 在第一个mybatis项目并读取数…

【网络编程】poll和epoll服务器的设计

文章目录 前言一、poll二、epoll 1.epoll初识2.epoll服务器的设计3.epoll的工作原理4.epoll的优点5.epoll的工作模式总结 前言 poll和select一样&#xff0c;也是一种linux中的多路转接的方案。而poll解决了select的两个问题&#xff1a; 1.select的文件描述符有上限的问题。…

[计网02] 数据链路层 笔记 总结 详解

目录 数据链路层概述 主要功能 封装成帧 透明传输 差错检测 冗余码 差错控制 检错编码 纠错编码 奇偶效验法 CRC循环冗余码 静态分配信道 频分多路复用FDM 时分多路复用TDM 波分多路复用WDM 码分多路复用CDM 随机访问介质的访问控制 ALOHA CSMA CSMA/CD CSMA/…

Weblogic Server工具WLST的使用

1.Weblogic脚本工具WLST介绍 可以用命令行来操作 Weblogic scripting tools 2.Weblogic WLST三种工作模式 2.1 wlst.sh tips:weblogic的T3 协议与HTTP/HTTPS 协议 操作如下&#xff1a;wlst在 common目录下 weblogic14c/wlserver/common/bin/ [weblogicfysedu32 weblogic]$…

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口&#xff1f;&#xff01;&#x1f60e; 前言&#x1f64c;【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口&#xff1f;&#xff01;查看自己的配置文件&#xff1a;最终成功访问如图所示&#xff1a; 总结撒花…