一. final: 最终
定义类: 无法被继承(完全自闭)
定义方法: 无法被重写(半自闭)
定义属性: 无法被二次赋值(常量 全大写)
二. 抽象类 abstract
抽象类是怎么诞生的 ? 是因为类中有抽象方法, 才使得这个类【被动的】变成了抽象类
抽象方法是怎么来的 ? 是因为有些方法的方法体根本无法写出实现细节
面积 周长 启动 停止 ....(一概而论)
三. 接口interface 实现implement
子类继承父类 extends
实现类实现一个接口 implement
接口其实就是定义的某个标准, 该标准中必须具有哪些方法
一个类想扩展某个功能, 就必须遵守某个接口的标准, 也就是实现该接口
抽象类是半残废(还有点普通方法可以用)
接口是全残废(没有1个方法能用)
★★★发现接口主要的作用是解决了Java只能单继承的弱点
鸬鹚(鱼鹰) Cormorant
啄木鸟 Woodpecker
老鹰Hawk
接口特性: 接口支持多继承
Java中类只能单继承, 但是接口反而可以多继承
父类: 超类, 基类
子类: 派生类, 衍生类
抽象类与接口的异同点:
相同点:
a. 都有抽象方法
b. 都不能实例化(new)
c. 派生类都必须实现抽象方法
不同点:
a. 抽象类使用abstract, 接口使用interface
b. 子类只能继承一个抽象类, 但是可以实现多个接口
c. 抽象类有构造函数, 接口没有构造函数
d. 抽象类中有构造, 普通, 抽象方法, 静态方法, 变量常量
接口中有抽象方法, 常量
e. 抽象类继承用extends, 接口实现用implement
抽象类和接口同样实行向上转型:
抽象类 对象名 = new 子类();
接口 对象名 = new 实现类();
抽象类满足的语法: is a(是一个) 狗是一个看门功能
狗是一个动物 继承
接口满足的语法: has a(有一个) 狗有一个看门功能 实现
狗有一个动物
-------------------------- 异常处理
异常处理是衡量一门语言是否成熟的标准, 也是Java语言的重大特点之一
异常处理能让我们的程序具有健壮性
我们先了解如果没有异常的程序会是什么样 !
一旦产生了异常, 发生异常的语句以及其后语句将不再执行, 默认情况下进行异常信息输出, 自动结束程序执行
我们需要做的异常处理就是如果出现了异常, 也应该让程序正确往下执行结束
如果需要进行Java的异常处理, 需要通过3个关键字来实现:
try : 尝试
catch : 捕获
finally : 最终异常处理基本语法结构:
try{
可能出现异常的代码
}catch(异常类 e){
异常处理
}catch(异常类 e){
异常处理
}finally{
无论如何都会执行的代码
}语法结构:
try{} 编译报错
try{}catch(){} 可以这么写
try{}finally{} 可以这么写(但是不建议写, 没有catch异常没有意义, 报了错没人处理)
try{}catch(){}finally{} 可以(完全体)finally关键字的作用:
始终都会执行的语句, 一般用于回收系统资源(类似我们在SQL游标中的释放deallocate)关于异常的简单处理:
显示异常提示语句: e.getMessage()
打印异常的堆内存详细信息: e.printStackTrace();