学习体验之抽象类,接口,异常体系

抽象类

抽象类的概述:

当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了!

在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类!

抽象类的特点:

1.抽象类和抽象方法必须被abstract关键字修饰。

2.抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类。

3.抽象类不能实例化,但是参照多态的方式,通过子类对象实例化,这叫抽象类多态;抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

4.抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类。

抽象类的成员特点

注意:

抽象类的子类,要么重写抽象类中的所有抽象方法,要么自己是抽象类,不然会报错。

接口:

概念:

接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用,java中的接口更多体现在对行为的抽象。

特点:

1.接口用关键字inerface修饰。如:public interface 接口名{}

2.类实现接口用implements表示。如:public class 类名 implements 接口名{}

3.接口不能实例化。

接口如何实例化,参照多态的方式,通过实现类对象实例化,这叫接口多态;多态的形式:具体类多态,抽象类多态,接口多态。

4.接口的实现类要么重写接口中的所有抽象方法,要么是抽象类。

接口的成员特点

成员变量:

1.只能是常量,不能被修改

2.默认修饰符:public static final

构造方法:

1.接口没有构造方法,因为接口主要是对行为进行抽象,是没有具体存在

2.一个类如果没有父类,默认继承自Object类

成员方法:

1.都是抽象方法

2.默认修饰符:public abstract

类和接口的关系

抽象类和接口的区别

1.接口只有定义,不能有方法的实现

2.接口强调特定功能的实现,而抽象类强调所属关系

也可以通俗成把一个东西必须有的功能放入抽象,可有可无的功能放如接口。如门,开门关门是基本的,所以放入抽象类,而报警功能在一些门上并没有这个功能,如果一并放入抽象,就会固定使用,所以可以放入接口中,如果这个门有这个功能就实现这个接口。

异常体系

概述

异常是指由于各种不期而至的情况,导致程序中断运行的一种指令流,如:文件找不到、非法参数、网络超时等。为了保证正序正常运行,在设计程序时必须考虑到各种异常情况,并正确的对异常进行处理。

异常又可以分为如下两类:

1.Erroy:虚拟机无法解决的问题。 主要问题为JVM系统内部的错误。堆栈溢出等。

2.Exception:因编程错误,或者外在因素导致的问题。比如:空指针异常,数组越界等。

异常的体系结构

 

异常处理

JVM的默认处理方案

如果程序出现了问题,我们没有做任何处理,最终jvm会做默认的处理。1:把异常的名称,异常原因及异常出现的位置等信息输出在了控制台;2.程序停止执行。

try-catch方式处理异常

格式:

try {
    可能出现异常的代码;
} catch(异常类名 变量名) {
    异常的处理代码;
}

执行流程

1.程序从 try 里面的代码开始执行

2.出现异常,就会跳转到对应的 catch 里面去执行

3.执行完毕之后,程序还可以继续往下执行

注意:try-catch是我们最经常要用到的一种处理方式。

Throwable

方法名说明
public String getMessage()返回此 throwable 的详细消息字符串
public String toString()返回此可抛出的简短描述
public void printStackTrace()把异常的错误信息输出在控制台

编译时异常和运行时异常的区别

  • 编译时异常

    • 都是Exception类及其子类

    • 必须显示处理,否则程序就会发生错误,无法通过编译

  • 运行时异常

    • 都是RuntimeException类及其子类

    • 无需显示处理,也可以和编译时异常一样处理

    • 运行时异常可以不处理,但出现问题后,需要我们回来修改代码

throws方式处理异常

格式:

public void 方法() throws 异常类名 {
    
}

什么时候使用?

如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。

注意事项:

  • 这个throws格式是跟在方法的括号后面的

  • 编译时异常必须要进行处理,两种处理方案:try...catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理

  • 运行时异常可以不处理,出现问题后,需要我们回来修改代码

throws和throw的区别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值