抽象类与接口
抽象类
抽象类是所有子类属性的集合。
抽象类不能实例化对象。只有被继承了以后才能被使用。
定义
- 抽象类:Modifies abstract class name{}
- 抽象方法:abstract void method();
只有抽象类才可以包含抽象方法,
class B extends abstract-class A,则classB必须重写classA的抽象方法,或声明自己是abstract class。
继承抽象类和调用
抽象类继承的关键字是extends
需要注意,当我把class A classB class main都放入test内部时,需要把抽象类变为静态。内部调用的抽象类必须是静态的。
在内部类里面,就相当于成员,而抽象类得加静态才能调用。实际调用应该要用个B去继承,才能调用到A里面的动作方法。
外部类的调用和内部类调用有些区别,不过都是要类的对象去调用自己的外部类或者内部类。外部类和内部类都叫嵌套类。
接口
interface,是抽象方法的集合。是比抽象类更抽象的存在。
- 抽象类是类的抽象
- 接口是行为的抽象
接口中所有属性(特征)默认:public static final
接口中所有方法默认:public abstract
接口继承的关键字是implements
主方法
运行结果
注意,在刚开始的时候报错:
根据给出的提示修改了project structure—project settings—modules—Sources—language level,改成了8(因为我的jdk是1.8)
保证language level和sdk (project structure—project settings—modules—dependencies)是同样版本
但是发现还报错编译有问题:
结果发现是setting里还有一个Java compiler版本要改:
settings—build,execution,deployment—compiler—Java compiler—per module bytecode version—target bytecode version改为8(因为我的jdk是1.8).
异常处理
异常处理的根接口是Throwable,分为:
- Error:环境发生的错误。开发人员无法处理。
- Exception:程序运行中产生的异常
2.1.Runtime异常
- 数组下标越界异常(IndexOutOfBoundsException)、
- 空指针异常(NullPointerException)、
- 对象类型强制转换异常(ClassCastException)
- 数组存储异常(ArrayStoreException,即数组存储类型不一致)
2.2.非Runtime异常 :也叫检查异常,即编译器要求必须进行处理的异常
- IOException
- SqlException
Java异常机制用到的几个关键字:
try、catch、finally、throw、throws。