谈谈final, finally, finalize的区别

来源:互联网 发布:虎牙pc直播软件 编辑:程序博客网 时间:2024/05/14 21:17
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声
明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时
给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,
然后控制就会进入 finally 块(如果有的话)。

  finalize—方法名。Java技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。


final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.

finally是异常处理语句结构的一部分,表示总是执行

try{

}catch{

}finally{

}

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,
例如关闭文件等.

abstract
修饰类:不能用new 实列化一个对象
但可以声明成一个抽象类的变量

修饰方法: 没有方法体,以分号结束
子类如果是抽象类,可以不实现;如果子类不是抽象类,一定要实现抽象方法
如果一个类里有一个抽象方法,此类必为抽象类
如果一个类是抽象类,里面的方法可以不为抽象方法

Interface
用interface来定义一个接口
里面的方法都没有方法体
所有的方法和属性的修饰符只能是 public或不写(默认public)
接口里能定义属性
用implements来实现一个接口
一个类可以实现多个接口
实现类“继承”接口的属性
实现类里要实现接口中的所有方法
接口不能用new 来实例化
但可以声明一个接口变量

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

0 0