【七日阅书】5 抽象和接口、异常处理《Java程序设计与计算思维》
【摘要】
一、前言
【七日阅书】1 计算思维和Java特性《Java程序设计与计算思维》
【七日阅书】2 Java的数据类型和流程控制《Java程序设计与计算思维》
【七日阅书】3 字符串、数组、集合、泛型《...
一、前言
【七日阅书】1 计算思维和Java特性《Java程序设计与计算思维》
【七日阅书】2 Java的数据类型和流程控制《Java程序设计与计算思维》
【七日阅书】3 字符串、数组、集合、泛型《Java程序设计与计算思维》
二、抽象
1.如何理解抽象
抽象的意义在于创建标准,实现抽象类的类必须实现抽象类的抽象方法。
比如猫都会叫,但是叫声有差别,那么定义了抽象类"猫"之后,我要想做一个品种猫,就必须实现猫叫的方法。
在实现抽象类的过程中,也就是实现对标准的统一,逻辑上也就避免了出错。
2.抽象类的注意事项
3.实际代码帮助理解
首先是定义抽象类,我加了一些注释帮助理解。
package com.example.demo.tool;
/**
* 猫的抽象类
*/
abstract class CatAbstract {
//构造函数
CatAbstract(){
System.out.print("我是抽象类的构造函数\r\n");
}
abstract public void jump(); //抽象方法,没有具体实现
public void run(){
System.out.print("我是抽象类的函数,跑起来了!\r\n");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
然后是定义类作为抽象类的实现,注意对于抽象类内函数也是要实现的。
package com.example.demo.tool;
/**
* 天津猫是抽象猫的实现,我家的猫就是从天津拿来的
*/
public class TjCat extends CatAbstract {
@Override
public void jump() {
System.out.print("我可跳了啊\r\n");
}
public void kuaiban(){
System.out.print("我可会打快板\r\n");
}
@Override
public void run() {
super.run();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
调用之后的输出。
三、接口
1.接口和抽象的区别
- 接口只能定义成员常数或抽象的成员、方法
- 抽象类至少包含一个完整方法,接口包含的都是抽象方法
- 接口支持多重继承
接口的存在意义和抽象类相同,都是为了遵循设计规范,避免出错。
2.接口的注意事项
3. 实际代码帮助理解
首先是定义接口类,我也加了一些注释。演示支持实现多接口,我做了两个接口。
/**
* 猫的接口类
*/
interface CatInterface {
void run(); //由于必须所有方法都是public,所以public没必要写上
void jump();
}
interface CatInterface2 {
int tailNum = 1;
void eat();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
实现类实现了两个接口类的方法。
/**
* 接口类的实现,支持实现多接口
*/
public class TianjinCat implements CatInterface,CatInterface2 {
@Override
public void run() {
System.out.print("我可跑了啊\r\n");
}
@Override
public void jump() {
System.out.print("我有"+ String.valueOf(tailNum) +"条尾巴!\r\n");
System.out.print("我可跳了啊\r\n");
}
@Override
public void eat() {
System.out.print("我可吃了啊\r\n");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
控制器内直接实例化实现类。
TianjinCat tianjinCat = new TianjinCat();
tianjinCat.eat();
tianjinCat.jump();
tianjinCat.run();
- 1
- 2
- 3
- 4
实际运行结果如下。
四、异常
本书中被成为例外处理,异常和错误。
1.错误
2.异常
异常则是发生例外鞥马上处理的错误。
3.捕获异常并处理
可以参考如下代码片段,通过对异常的捕获来抛出预期的异常。
public static List<List<String>> readExcelToLines(byte[] bytes) {
try (Workbook workbook = new XSSFWorkbook(new ByteArrayInputStream(bytes))) {
return readLines(workbook);
} catch (OLE2NotOfficeXmlFileException e) {
try (Workbook workbook = new HSSFWorkbook(new ByteArrayInputStream(bytes))) {
return readLines(workbook);
} catch (IOException exception) {
throw new RuntimeException(exception);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
五、总结
- 抽象和接口,都是为了规范化整个项目,减少中间出错的风险。
- 对异常的catch也是一种预期管理,让程序在自己的预期内运行。
六、源码地址
小雨青年 / Java Demo · CODE CHINA (gitcode.net)
文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。
原文链接:coderfix.blog.csdn.net/article/details/121767341
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)