Java基础总结----第四章抽象类,接口,异常

本文详细介绍了Java中的抽象类、抽象方法、接口的使用,以及类与接口的关系,包括继承和实现的区别。同时涵盖了Java异常处理机制,包括检查性异常和非检查性异常,以及try-catch-finally语句的用法。
摘要由CSDN通过智能技术生成

抽象类:abstract关键字

//由抽象方法的类一定是一个抽象类,但是抽象类中可以没有抽象方法
public abstract class AbstractTest {
    public int age;
    public AbstractTest(){}
    //没有抽象的构造方法
    //public abstract AbstractTest(int a);
    //使用abstract修饰的方法叫做抽象方法,而且没有方法体
    public abstract void method();
}
//子类继承父类的时候,如果父类中由抽象方法,那么子类就会报错,需要在父类中的抽象方法,如果
// 没有重写父类中全部的抽象方法,子类就需要定义成一个抽象类,否则编译报错
class test extends AbstractTest{

    @Override
    public void method() {
        //抽象类不能创建对象;
        //AbstractTest at=new AbstractTest();
        //可以创建抽象类类型的对象由之类对象赋值,向上转型
        AbstractTest at= new test();
    }

接口:

package com.haina.lesson14;
//接口的使用interface修饰
//可以有1个或0个用public修饰的接口
public interface InterfaceTest {
    //接口中没由抽象方法
    //interfaceTest (){}
    //默认用public static final修饰
    int a=10;//静态常量
    //默认使用public abstract 修饰
    void method();
    //jdk1.8之后可以有普通方法
    default void doSomething(){}
    //静态方法可以有方法体
    static void saySomething(){}

}
//一个接口可以有多个接口
interface Test01{}
//public修饰的接口要更文件的名字一样
//public interface Test02{}
interface Test03{}
//继承关键字extends只能写一次,多继承要用逗号隔开
//接口与接口之间是多继承关系
interface Test04 extends Test03,Test05{}
interface Test05{}
interface Test06{}
//类和接口之间是实现关系,多实现,
//继承和实现写完的现象是一样的,所以当类实现接口的时候,会自动拥有接口中的所有方法,因此类中会有接口
// 中的抽象方法,如果不重写接口中全部的抽象方法,那么就要定义成抽象类,否则编译报错
class Test07 extends Test08 implements Test06,InterfaceTest{
    //一个类可以在继承一个类的同时实现多个接口,但是要求继承写在实现前面
    @Override
    public void method() {
//接口不能创建对象
        //InterfaceTest it=new InterfaceTest();
        //向上转型,由实现类创建对象给接口类型赋值,创建出接口类型的对象
        InterfaceTest it=new Test07();
    }
}
class Test08{}
class Test09{}
class Test10{}

异常:

/**
 * Java异常类:是用于处理Java中的异常的
 * 异常的父类是Throwable
 * Throwable有两个类一个是error,一个是Exception
 * error是错误,是由于系统原因有、类似于软件问题或者jdk问题等引起的,不知程序员的问题     大问题
 * Exception是异常,通常由于程序员的逻辑问题引起的可以听过调试代码解决   小问题
 *
 * Exception有两个分类,一个是检查性异常,一个是非检查性异常
 * 检查性异常:范围是runtimeException及其子类以外的其他类
 * 写在代码中会直接报错,需要预先处理
 *
 * 非检查性异常:范围是runtimeException及其子类
 * 写在代码中不会直接报错,需要运行时才会报错
 *
 */
 public void method(){
        //try 代码块中写的是可能出现异常的代码
        //try不能单独存在
        try {
            //Class.forName("com/haina/lesson15/ExceptionTest04.java");
            int [] a=new int [5];
            System.out.println(a[5]);
            System.out.println("下标越界");
            //try中发生异常会直接在异常发生的位置停止运行,进入catch进行捕获
        }//catch代码块中写的是解决异常的代码

//        catch (ClassNotFoundException e) {
//            e.printStackTrace();//默认解决异常的方式
// }
        catch (ArrayIndexOutOfBoundsException e){
            System.out.println("数组越界");
        }//多个catch的时候,父异常不能写在子异常的前面
        catch(Exception e){

        }
        //finally中写的是受保护的代码,或者说是不管异常是否发生都要执行的代码
        //只能写一个或0个finally
        finally {
            System.out.println("finally中的代码");
        }
    }

    public static void main(String[] args) {
        ExpcetionTest04 e=new ExpcetionTest04();
        e.method();
    }

当一个异常不进行处理,抛出后会向上抛出,如果都不处理,在后有jvm(虚拟机)处理;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值