Java_Day05学习

Object类被子类经常重写的方法

方法说明
toString()返回当前对象本身的有关信息,按字符串对象返回
equals()比较两个对象是否是同一个对象,是则返回****true
hashCode()返回该对象的哈希代码值
getClass()获取当前对象所属的类信息,返回Class对象

Object类

Object类的 equals() 方法
比较两个对象是否是同一个对象,是则返回trueinstanceof用于判断一个引用类型所引用的对象是否是一个类的实例可以用 instanceof 判断一个类是否实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。instanceof 的语法格式为:eg:if (a instanceof Cat) { // 猫做的事情Cat c = (Cat) a;c.work();对象 instanceof(或接口)
它的返回值是布尔型的,或真(true)、或假(false)

多态

定义:多态就是指一个类实例的相同方法在不同情形有不同表现形式。//同一个引用类型,使用不同的实例而执行不同操作eg://父类的声明   对象   =    new     子类的对象;Person_homework test = new China_People();//父类和子类中都存在的方法 最终执行的是子类的方法test.work();优点://频繁修改代码,代码可扩展性、可维护性差多态就是同一个接口,使用不同的实例而执行不同操作多态的三个条件:继承的存在(继承是多态的基础,没有继承就没有多态);子类重写父类的方法(多态下调用子类重写的方法);父类引用变量指向子类对象(子类到父类的类型转换)。子类转换成父类时的规则:将一个父类的引用指向一个子类的对象,称为向上转型(upcasting),自动进行类型转换。总结:
一、多态
1、定义:1)生活中:同一事物,在不同环境下,表现出不同的形态2)程序中:同一引用类型,传入不同的实例,会得到不同结果
2、多态的实现步骤:1)子类继承父类2)子类重写父类的方法3)父类引用,传入子类实例
3、多态的两种表现形式1)父类作为方法的参数出现2)父类作为方法的返回值出现
4、引用类型之间转换1)向上转型:直接转,即  父类  父对象=new 子类();2)向下转型:强制转,即  子类  子对象=(父类)父对象;强制转换易引发ClassCastException,因此转换之前需判断类型是否匹配if(obj instanceof)则进行转换3)原因:子  is  a  父;  父 has 子
5、多态的优点:提高代码的可扩展性
6、父类引用指向子类实例的注意事项1)父类引用指向父类实例:父类 父对象=new 父类();可访问父类的允许访问成员2)子类引用指向子类实例:子类 子对象=new 子类();可访问父类和子类的允许访问成员3)父类引用指向子类实例:父类 父对象=new 子类();可以访问父类允许访问的成员;不允许访问子类特有成员;但如果子类重写了父类方法,则调用的是子类重写后的方法

多态的例子

                        public class TestAnimalDemo {public static void main(String[] args) {// 向上转型Animal a = new Cat(); a.eat(); // 调用的是 Cat 的 eatshow(new Cat()); // 以 Cat 对象调用 show 方法show(new Dog()); // 以 Dog 对象调用 show 方法Cat c = (Cat) a; // 向下转型c.work(); // 调用的是 Cat 的 work}/****/public static void show(Animal a) {a.eat();// 类型判断if (a instanceof Cat) { // 猫做的事情Cat c = (Cat) a;c.work();} else if (a instanceof Dog) { // 狗做的事情Dog c = (Dog) a;c.work();}}}abstract class Animal {abstract void eat();}class Cat extends Animal {public void eat() {System.out.println("吃鱼");}public void work() {System.out.println("抓老鼠");}}class Dog extends Animal {public void eat() {System.out.println("吃骨头");}public void work() {System.out.println("看家");}}输出:吃鱼抓老鼠吃骨头看家吃鱼抓老鼠

抽象类

1.定义:Java也可以创建一种类专门用来当作父类,这种类称为“抽象类”;
//抽象类的作用有点类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类。但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由它来创建对象。eg:abstract class 类名称 // 定义抽象类
{声明数据成员;访问权限 返回值的数据类型 方法名称(参数...//定义一般方法{...}abstract 返回值的数据类型 方法名称(参数...;//定义抽象方法,在抽象方法里,没有定义方法体
}
//但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例
//普通类可以被实例化2.规则://抽象类和抽象方法都必须用abstract关键字来修饰;//抽象类不能被实例化,也就是不能用new关键字去产生对象;//抽象方法只需声明,而不需实现;//含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才		能被实例化,否则这个子类还是个抽象类。2.抽象方法VS普通方法
有无方法体3.抽象类与抽象方法的使用//抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类//如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类//没有抽象构造方法,也没有抽象静态方法//抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用

接口

public interfaceMyInterface {public void foo()//其他方法}1.接口的特性//接口不可以被实例化//实现类必须实现接口的所有方法//实现类可以实现多个接口 implements、多个接口使用逗号隔开//接口中的变量都是静态常量(public static final)
2.面向接口编程程序设计时:关心实现类有何能力,而不关心实现细节面向接口的约定而不考虑接口的具体实现

异常

1.定义:异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
2.Java的异常处理的5个关键字:trycatchfinallythrowthrowstry() :执行可能产生异常的代码,放到这个模块catch() 发生异常时,捕获异常,丢给Efinally() 无论是否发生异常,代码总能执行throw()手动抛出异常throws()抛出的各种异常声明方法可能要抛出各种异常printStackTrace()的堆栈跟踪功能显示出程序运行到当前类的执行流程可以打印出异常堆栈信息//异常类型 InputMismatchExceptionjava.util.InputMismatchException//哪一个方法(main)中抛出了异常,出现异常的位置 Test3.java:15at cn.jbit.exception.Test3.main(Test3.java:15)
getMessage()返回异常信息描述字符串,是printStackTrace()输出信息的一部分eg:
package com.dx.test04;
import java.util.Scanner;
public class Java01 {public static void main(String[] args) {Scanner input = new Scanner(System.in);int a = input.nextInt();if (a > 10) {try {//1、将所有的可能出现的异常代码放到trySystem.out.println("创建流对象"); //出现异常前的都会被执行并输出System.out.println(10 / 0);System.out.println("写文件");} catch (Exception e) {    //若 catch (异常类型ex)  异常类型不匹配,程序中断// 2捕捉异常 ->异常处理(只有出现异常了,才会执行catch)e.printStackTrace();     //打印出现的异常情况System.out.println("出现异常啦.....");return XXX; //如果有return 要先执行finally 再返回catch执行return} finally {//不管有异常还是没有异常,finally代码一定会被执行//唯一不执行的情况,catch没抓到异常 ,直接报错,中断程序了,退出Java虚拟机System.out.println("释放流");}}else{System.out.println("我也不知道干啥...");}System.out.println("不能影响我去玩....");}
}
打印结果:创建流对象出现异常啦.....释放流不能影响我去玩....java.lang.ArithmeticException: / by zeroat com.dx.test04.Java01.main(Java01.java:11)

在这里插入图片描述

多重catch块

//引发多种类型的异常排列catch语句的顺序:先子类后父类发生异常时按顺序逐个匹配只执行第一个与异常类型匹配的catch语句tips://try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一//try-catch块中存在return语句,是否还执行finally块? 如果执行,说出执行顺序//try-catch-finally块中,finally块唯一不执行的情况是什么?

声明异常

throw 自动抛出异常
public void myMethod() throw IOException, SQLException {// 方法体
}throws 手动抛出异常
public void myMethod() throws IOException, SQLException {// 方法体
}如果在一个方法体中抛出了异常,如何通知调用者?throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
//方式1:调用者处理异常
//方式2:调用者继续声明异常 ⚫main()方法声明的异常由Java虚拟机处理throwthrows区别

在这里插入图片描述

//如果一个值为null,不能.属性和方法,一旦.就抛出空指针异常

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

TAPD多类别需求管理

本文档将介绍:什么是 TAPD 多类别需求管理,以及如何配置或创建新的需求类别。 一、概述 在研发管理过程中,团队经常会遇到规模扩张、不同特性团队间研发模式差异化大等问题。以上问题导致团队中的需求无法进行统一管理。为解决上述情况&…

《关键跃升读书笔记》11

协作: 怎么解决“容忍⿊”这类问题?我们要重新理解“⽂化”。⼈类⽂化、企 业⽂化,都是为了让⼈们更好地协作。 再⼩的公司,再⼩的团队,都是⼀个共同协作体,就像整个⼈类社会 是共同协作体。理解了⼈类社会…

卷积的理解和应用

妈妈说,生活就像一盒各种口味的巧克力,你永远不知道下一块是什么。 我说生活像这个棒棒糖。不同口味,方向相反的味道一路走一路相伴,衰老和成长缠绕在一起,成了最终的滋味。 一、 卷积的直觉 这一生…

菱形继承的类对父类的初始化、组合、多态、多态的原理等的介绍

文章目录 前言一、菱形继承的类对父类的初始化二、组合三、 多态1. 构成多态2. 虚函数3. 虚函数的重写4. 虚函数重写的两个例外1. 协变2. 析构函数的重写 5. C11 final 和 override1. final2. override 6. 设计不想被继承的类7. 重载、覆盖(重写)、 隐藏…

YOLOv8——测量高速公路上汽车的速度

引言 在人工神经网络和计算机视觉领域,目标识别和跟踪是非常重要的技术,它们可以应用于无数的项目中,其中许多可能不是很明显,比如使用这些算法来测量距离或对象的速度。 测量汽车速度基本步骤如下: 视频采集&#x…

JVM的基本组成

一、JDK\JRE\JVM JDK: 全称 "Java Development Kit" ,Java 开发工具包,提供 javac 编译器、jheap、jconsole 等监控工具;JRE: 全称"Java Runtime Environment",Java 运行环境,提供Class Library 核心类库 JV…

同等学力英语用什么app背单词

同等学力申硕的意义和作用 授予同等学力人员硕士学位是国家为同等学力人员开辟的获得学位的渠道,对于在职人员业务素质的提高和干部队伍建设起到积极作用。它为那些没有传统学历背景但具有相应学术水平的人员提供了获取学位的机会,有助于提升他们的职业竞…

WebSocket实现在线聊天室

项目实现源码: 前端源码 后端源码 1.常见的消息推送方式 1.1 轮询 1.1.1 轮询的概念 客户端以固定的事件间隔(例如每秒或几分钟)向服务器发送HTTP请求,服务器收到请求后,处理请求并返回数据给客户端 轮询具体实现htt…

POI获取模板文件,替换数据横纵动态表格、折线图、饼状图、折线饼状组合图

先说几个关键的点 pom.xml依赖 <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version> </dependency> <dependency><groupId>com.deepoove</groupId>&…

鸭脖变“刺客”,啃不起了

撰文&#xff5c;ANGELICA 编辑&#xff5c;ANGELICA 审核&#xff5c;烨 Lydia 声明&#xff5c;图片来源网络。日晞研究所原创文章&#xff0c;如需转载请留言申请开白。 你有多久没吃卤味了&#xff1f; 2020年之后&#xff0c;人们对于几大卤味巨头的关注度正在下降。 …

【MySQL 04】数据类型

目录 1.数据类型分类 2.数值类型 2.1 tinyint 类型 2.2 bit类型 2.3 float类型 2.4decimal 3.字符串类型 3.1 char类型 3.2 varchar类型 4.日期和时间类型 6. enum和set类型 6.1.enum和set类型简介&#xff1a; 6.2.enum和set的一般使用方法 6.3.用数字的方式…

业务数据批量插入数据库实践

业务数据如何存储一直以来都是项目开发中的一个比较重要的话题。我们要从资源的利用率&#xff0c;业务场景和技术实现多个方面考虑存储的问题。“抛开业务谈技术就是耍流氓”&#xff0c;所有技术架构都要站在实际的业务场景中分析。比如个人端的产品&#xff0c;这种就属于读…

fiddler抓包11_列表显示服务器IP (配置文件)

请求列表默认不显示服务器IP字段&#xff0c;也无法从定制列窗口添加&#xff0c;可以修改CustomRules.js实现。 ① 菜单栏“Rules”&#xff08;规则&#xff09; - “Customize Rules...”&#xff08;自定义规则&#xff09;&#xff0c;打开CustomRules.js文件。 &#xf…

基于stm32的跑步机控制系统设计-设计说明书

设计摘要&#xff1a; 随着人们对健康和健身的关注增加&#xff0c;跑步机逐渐成为室内健身的主要设备之一。本文提出了一种基于STM32的跑步机控制系统设计&#xff0c;旨在实现对跑步机的运行速度、倾斜角度和运动模式等参数的精确控制&#xff0c;提供更好的健身体验。 首先…

vue3开发中易遗漏的常见知识点

文章目录 组件样式的特性Scoped CSS之局部样式的泄露Scoped CSS之深度选择器CSS Modules在CSS中使用v-bind 非props属性继承组件通信父子组件的相互通信props/$emit父组件传递数据给子组件子组件传递数据给父组件 非父子组件的相互通信Provide/inject全局事件总线 组件插槽作用…

LVGL 控件之消息框(lv_msgbox)

目录 一、概述二、消息框1、创建消息框2、获取消息框的组成部分3、关闭消息框部件4、消息框部件事件5、API 函数 一、概述 消息框部件是由多个小部件构建而成的&#xff0c;包括&#xff1a;lv_obj、lv_btn、lv_label 和 lv_btnmatrix 部件&#xff0c;示意图如下所示&#xf…

简单题83. 删除排序链表中的重复元素 (Java)20240920

问题描述&#xff1a; java&#xff1a; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; th…

【LLM学习之路】9月23日24日 第十、十一天 Attention代码解读

【LLM学习之路】9月23日24日 第十、十一天 Attention代码解读 Transformer模型大致分为三类 纯 Encoder 模型&#xff08;例如 BERT&#xff09;&#xff0c;又称自编码 (auto-encoding) Transformer 模型&#xff1b;纯 Decoder 模型&#xff08;例如 GPT&#xff09;&#…

基于python的django微博内容网络分析系统,实现文本划分词结构

本项目旨在开发一个基于Python的Django框架的微博内容网络分析系统&#xff0c;聚焦于微博文本的分词处理、名词提取和主成分分析。该系统通过数据收集与预处理、分词及结构化文本分析&#xff0c;为舆情监测、话题分析和用户行为研究提供了一体化的解决方案。 主要功能包括&a…