java面向对象(九)

news2024/11/24 16:51:03

文章目录

  • 一、abstract的应用举例
  • 二、接口的使用
    • 1.概念
    • 2.代码案例
  • 三、try-catch-finally使用步骤
    • 1.注意点
    • 2.finally注意点
  • 四、异常处理的方式二:throws + 异常类型
    • 1.如图所示:
    • 2.代码如下:


提示:以下是本篇文章正文内容,下面案例可供参考

一、abstract的应用举例

public abstract class Vehicle{
	public abstract double calaFuelEfficiency();  //计算燃料效率的抽象方法
	public abstract double clacTripDistance();  //计算行驶距离的抽象方法
}
public class Truck extends Vehicle{
	public double calaFuelEfficiency(){
		//写出计算卡车的燃料效率的具体方法
	}
	public double clacTripDistance(){
		//写出计算卡车行驶距离的具体方法
	}
}

public class RiverBarge extends Vehicle{
	public double calaFuelEfficiency(){
		//写出计算卡车的燃料效率的具体方法
	}
	public double clacTripDistance(){
		//写出计算卡车行驶距离的具体方法
	}
}

二、接口的使用

1.概念

1.接口使用上也满足多态性
2.接口,实际上就是定义了一种规范
3.开发中,体会面向接口编程!

2.代码案例

public clas USBTest{
	main(){
		Computer com = new Computer();
		//1.创建了接口的非匿名实现类的非匿名对象
		Flash flash = new Flash();
		com.transferData(falsh);
		//2.创建了接口的非匿名实现类的匿名对象
		com.transferData(new Printer());
		//3.创建了接口的匿名实现类的非匿名对象
		USB phone = new USB(){
			public void start(){
				sysout("手机开始工作");
			}
			public void stop(){
				sysout("手机结束工作");
			}
					
		};
		com.transferData(phone);
		//4.创建了接口的匿名实现类的匿名对象
		com.transferData(new USB(){
		public void start(){
			sysout("mp3开始工作");
		}

		public void stop(){
			sysout("mp3结束工作");
		}
		});
	}
}

class Computer{
	public void transferData(USB usb) { //USB usb = new Flash();
		usb.start();
		sysout("具体传输数据的细节");
		usb.stop();
	}
}
interface USB{
	//常量,定义了长、宽、最大最小的传输速度等。
	void start();
	void stop();
}
class Flash implements USB{
	public void start(){
		sysout("U盘开启工作");
	}
	@Override
	public void stop() {
		System.out.println("U盘结束工作");
	}
}

class Printer implements USB{
	public void start(){
		sysout("打印机开启工作");
	}
	@Override
	public void stop() {
		System.out.println("打印机结束工作");
	}

}



三、try-catch-finally使用步骤

1.注意点

  1. finally是可选的。
  2. 使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配
  3. 一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构 (在没有写finally的情况),继读执行其后的代码。
  4. catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓。catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错。
  5. 常用的异常对象处理的方式: @ String getMessage() printStackTrace()
  6. 在try结构中声明的变量,再出了try结构以后,就不能再被调用
    使用try-catch-finally处理编译时异常,使得程序在编译时就不再报错,但是运行时仍可能报错。
    相当于我们使用try-catch-finally将一个编译时可能出现的异常延迟到运行时出现。

2.finally注意点

1.finally是可选的
2.finally中声明的是一定会被执行的代码。即使catch中又出现异常了,try中有return语句,catch中有return语句等情况。
3.像数据库连接、输入输出流、网络编程Socket等资源JVM是不能自动的回收的,我们需要自己手动的进行资源的释放。此时的资源释放,就需要声明在finally中。

代码如下(示例):

public void test1() {
			try {
				int a = 10;
				int b = 0;
				System.out.println(a/b);
			}catch (ArithmeticException e) {
				//e.printStackTrace();
				int [] arr = new int[10];
				System.out.println(arr[10]);
		
			}catch(Exception e) {
				e.printStackTrace();
			}
			//System.out.println("我好美呀哈哈哈~~~");
			finally {
				System.out.println("我好美呀哈哈哈~~~");
			}
			
		}
public void test2() {
		FileInputStream fis  = null;
		try {
			File file = new File("hello.txt");
			fis = new FileInputStream(file);
			
			int data = fis.read();
			while(data != -1) {
				System.out.println((char)data);
				data = fis.read();
			}	
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				if(fis != null)
					fis.close();
			}catch(IOException e) {
			e.printStackTrace();
			}
			
		}
	}
	
	
	
	@Test
	public void testMethod() {
		int num = method();
		System.out.println(num);
	}
	
	
	public int method() {
		try {
			int [] arr = new int[10];
			System.out.println(arr[10]);
			return 1;
		}catch(ArrayIndexOutOfBoundsException e){
			e.printStackTrace();
			return 2;
		}finally {
			System.out.println("我一定会被执行");
		}
	}
	

四、异常处理的方式二:throws + 异常类型

1.如图所示:

在这里插入图片描述

2.代码如下:


/**
 * @author YML
 *  异常处理的方式二:throws  +  异常类型
 *  1. "throws +异常类型"
 */
public class ExpectionTest2 {
	
	public static void main(String[] args) {
		try {
			method2();	
		}
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		catch(IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void method3() {
		try {
			method2();
		}catch(IOException e) {
			e.printStackTrace();
		}
	}
	

	public static void method2() throws FileNotFoundException,IOException
	{
		method1();
	}
	
	public static void method1() throws FileNotFoundException,IOException{
		File file = new File("hello.txt");
		FileInputStream fis = new FileInputStream(file);
		
		int data = fis.read();
		while(data != -1) {
			System.out.println((char)data);
			data = fis.read();
		}	
		fis.close();
	}
}


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

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

相关文章

如何通过一键导出导入数据实现批量重命名文件名称

在日常办公中,我们经常需要对大量的文件进行重命名,以便更好地管理和查找文件。而且,有时候我们还需要将文件名称翻译成其他语言,以适应不同的工作需求。如何高效地完成这项任务呢?接下来,我将介绍一种方法…

How AI can revolutionise science AI如何彻底改变科学 | 经济学人20230916版双语精翻

本期重磅推荐:2023年9月16日《经济学人》封面文章双语精读:How AI can revolutionise science(《AI将如何彻底改变科学》) How AI can revolutionise science AI将如何彻底改变科学 The technology is being applied in many fiel…

基于Yolov8的工业端面小目标计数检测(1)

1.端面小目标计数数据集介绍 工业端面小目标计数类别:一类,类别名object 数据集大小:训练集864张,验证集98张 缺陷特点:小目标计数,检测难度大,如下图所示; 1.1 小目标定义 1)以物体检测领域的通用数据集COCO物体定义为例,小目标是指小于3232个像素点(中物体是指…

SSM - Springboot - MyBatis-Plus 全栈体系(十二)

第二章 SpringFramework 六、Spring 声明式事务 1. 声明式事务概念 1. 编程式事务 编程式事务是指手动编写程序来管理事务,即通过编写代码的方式直接控制事务的提交和回滚。在 Java 中,通常使用事务管理器(如 Spring 中的 PlatformTransactionManage…

使用注解方式和XML配置方式完成AOP编程

第一种方式:基于注解 beanx10.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http:/…

Vue中如何封装组件,如何进行跨组件通信

封装组件和跨组件通信是Vue.js中非常重要的概念&#xff0c;它们有助于构建模块化、可维护和可扩展的应用程序。本文将深入讨论如何在Vue中封装组件以及如何实现跨组件通信&#xff0c;同时提供示例代码来帮助您更好地理解这些概念。 第一部分&#xff1a;Vue组件的封装 在V…

负载均衡在线oj

1.项目源码&#x1f339;load-balanced-online-oj fortianyang/project - 码云 - 开源中国 (gitee.com) 2.相关技术⭐ ⭕C STL 标准库 ⭕Boost 准标准库(字符串切割) ⭕cpp-httplib 第三方开源网络库 ⭕ctemplate 第三方开源前端网页渲染库 ⭕jsoncpp 第三方开源序列化、…

Linux下git安装及使用

Linux下Git使用 1. git的安装 sudo apt install git安装完&#xff0c;使用git --version查看git版本 2. 配置git git config --global user.name "Your Name“ ##配置用户 git config --global user.email emailexample.com ##配置邮箱git config --global --list …

MySQL学习笔记1

任务背景&#xff1a; 将原来的数据库从原来的MySQL-5.5 升级到现在的MySQL-5.7&#xff0c;并保证数据完整。 1&#xff09;不同版本MySQL的安装&#xff1b;yum glibc、源码安装&#xff0c;是企业100%要用到的。 2&#xff09;MySQL数据库版本升级&#xff1b;&#xff08…

【电源专题】明明芯片是写了能恒流充电,但为什么实际恒流充电电流在慢慢下降?

本案例发生在两个不同产品做对比时发现了差异。其实两个产品使用的 充电芯片是一致的,但是实际测试的情况下产品一在恒流充电过程中,电流正常保持,而产品二在恒流充电过程中电流在慢慢下降。 那么是不是说明产品二有什么问题呢?本来应该恒定电流充电的,为什么充电电流还能…

机器学习入门:从算法到实际应用

机器学习入门&#xff1a;从算法到实际应用 机器学习入门&#xff1a;从算法到实际应用摘要引言机器学习基础1. 什么是机器学习&#xff1f;2. 监督学习 vs. 无监督学习 机器学习算法3. 线性回归4. 决策树和随机森林 数据准备和模型训练5. 数据预处理6. 模型训练与调优 实际应用…

腾讯云16核服务器性能测评_轻量和CVM配置大全

腾讯云16核服务器配置大全&#xff0c;CVM云服务器可选择标准型S6、标准型SA3、计算型C6或标准型S5等&#xff0c;目前标准型S5云服务器有优惠活动&#xff0c;性价比高&#xff0c;计算型C6云服务器16核性能更高&#xff0c;轻量16核32G28M带宽优惠价3468元15个月&#xff0c;…

【数据结构】时间、空间复杂度

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 时间、空间复杂度 1. 算法效率3. 时…

1989-2022年企业排污许可证信息库数据(24万观测值)

1989-2022年企业排污许可证信息库数据&#xff08;24万观测值&#xff09; 1、时间&#xff1a;1989-2022年 2、指标&#xff1a;企业名称、登记状态、法定代表人、注册资本、成立日期、核准日期、所属省份、所属城市、所属区县、电话、更多电话、邮箱、更多邮箱、统一社会信…

基于Java的即可运动健身器材网站设计与实现(源码+lw+部署文档+讲解)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

PyTorch深度学习(六)【循环神经网络-基础】

RNN Cell&#xff1a; h0和x1生成h1,把h1作为输出送到下一次的RNN Cell里面。&#xff08;h1linear(h0,x1)&#xff09; RNN计算过程&#xff1a; 输入先做线性变换&#xff0c;循环神经网络常用的激活函数是tanh&#xff08;1区间&#xff09;。 构造RNN Cell&#xff1a; 代码…

亿纬锦能项目总结

项目名称&#xff1a;亿纬锦能 项目链接&#xff1a;https://www.evebattery.com 项目概况: 此项目用到了 wow.js/slick.js/swiper-bundle.min.js/animate.js/appear.js/fullpage.js以及 slick.css/animate.css/fullpage.css/swiper-bundle.min.css/viewer.css 本项目是一种…

【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码

冒泡排序原理 每次比较两个相邻的元素&#xff0c;将较大的元素交换至右端 冒泡排序执行过程输出效果 冒泡排序实现思路 每次冒泡排序操作都会将相邻的两个元素进行比较&#xff0c;看是否满足大小关系要求&#xff0c;如果不满足&#xff0c;就交换这两个相邻元素的次序&…

海外问卷调查是真实的吗?应该如何参与?

大家好&#xff0c;我是橙河网络&#xff0c;这篇文章介绍一下海外问卷调查是真实的吗&#xff0c;应该怎么参与&#xff1f; 海外问卷调查是真实存在的一种商业行为&#xff0c;很多跨国的公司、政府、大学或研究机构会用这种方式来收集来自世界各地的人们对于某个产品、政策…

【Vue】如何搭建SPA项目--详细教程

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《springMvc使用》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 目录 1.什么是vue-cli 2.安装 2.1.创建SPA项目 2.3.一问一答模式答案 3.运行SPA项目 3…