黑马程序员技术交流社区

标题: finally 与final [打印本页]

作者: 胡焱老师    时间: 2014-1-21 20:04
标题: finally 与final
在异常和final 中  这个有联系吗  好相似的
  有一句话 说 在多态中,自始至终是子类对象在做着类型变化,怎么理解这个句子呀?
作者: 苏小惠    时间: 2014-1-21 20:23
finally 和final是不同的。final是修饰符。意思是:最终。1.如果是写在类上,就说明这个类是最终类,无法被继承。2.写在方法上,就说明这个方法无法被继承这个类的子类复写。3.写在变量上,这个变量就成为常量,无法修改,常量名一般全部大写表示。finally是异常体系中的,一般和try..catch...finally组合,也可以和try单独组合,表示最终必定要执行的语句,比如数据库的资源是一定要关闭的,就将关闭动作写在fianlly代码块内。(除了,exist(0)情况除外)。多态:就是父类的引用,指向子类的对象。当只需要用到父类的功能时,只需把引用用父类引用表示,可以让调用者不必面对具体的子类,提高代码复用性。需要用到子类的特有功能,才需要将引用用子类的类型。所以都是子类对象在做着类型 变化
作者: 廉伟杰    时间: 2014-1-21 20:31
本帖最后由 廉伟杰 于 2014-1-21 20:33 编辑

首先第一个问题,finally和final定不一样了,finally是异常的统一出口:不管try块程序是否异常,也不管哪个catch执行,finally块总会执行。
try语句块或会执行的catch语句块使用了JVM系统退出语句例外;//System.exit(1);
try块必须和 catch块或和finally同在,不能单独存在,二者必须出现一个。
不要在finally中使用return 或throw语句,否则将会导致try、catch中的return或throw失效。而final是修饰符。

关于你的第二个问题,

编译时的类型由声明变量时使用的类型决定,即编译类型由左边决定

运行类型由实际赋给变量的对象决定,即运行类型由右边决定

如  Person p = new Student();  编译类型是Person  运行类型是Student

把运行类型当做是对象的实际的类型,也就是对象的真正的类型

把编译类型当做是,把对象看成什么类型

如:我把一个真正的学生对象看成一个人

希望我的回答对你有所帮助



作者: 胡焱老师    时间: 2014-1-22 14:20
廉伟杰 发表于 2014-1-21 20:31
首先第一个问题,finally和final定不一样了,finally是异常的统一出口:不管try块程序是否异常,也不管哪个 ...

很清晰:)
作者: lgqioi    时间: 2014-1-24 16:47
final关键字  最终  作为一个修饰符。1,可以修饰类,函数,变量。2,被final修饰的类不可以被继承。3,被final修饰的方法不可以被复写。4,被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,也可以修饰局部变量。5,内部类定义在类中的局部位置上是,只能访问该局部被final修饰的局部变量。
finally { 一定会执行的语句; }
finally的作用: 1、程序抛出了异常 2、执行了finally语句块
finally中定义的通常是 关闭资源代码。因为资源必须释放。
finally只有一种情况不会执行。当执行到System.exit(0);fianlly不会执行。
多态:自始至终是子类对象在做着类型变化,举例说明:
人,男人,女人
Person p = new Women();Person是父类,Woman是子类,需要用到子类的特有功能(如:生孩子)是子类对象在做着类型变化,父类要变化就是人生孩子,男人肯定不会吗!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2