A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡焱老师 中级黑马   /  2014-1-21 20:04  /  1158 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在异常和final 中  这个有联系吗  好相似的
  有一句话 说 在多态中,自始至终是子类对象在做着类型变化,怎么理解这个句子呀?

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

4 个回复

倒序浏览
finally 和final是不同的。final是修饰符。意思是:最终。1.如果是写在类上,就说明这个类是最终类,无法被继承。2.写在方法上,就说明这个方法无法被继承这个类的子类复写。3.写在变量上,这个变量就成为常量,无法修改,常量名一般全部大写表示。finally是异常体系中的,一般和try..catch...finally组合,也可以和try单独组合,表示最终必定要执行的语句,比如数据库的资源是一定要关闭的,就将关闭动作写在fianlly代码块内。(除了,exist(0)情况除外)。多态:就是父类的引用,指向子类的对象。当只需要用到父类的功能时,只需把引用用父类引用表示,可以让调用者不必面对具体的子类,提高代码复用性。需要用到子类的特有功能,才需要将引用用子类的类型。所以都是子类对象在做着类型 变化

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 廉伟杰 于 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

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

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

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

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


评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报 1 0
廉伟杰 发表于 2014-1-21 20:31
首先第一个问题,finally和final定不一样了,finally是异常的统一出口:不管try块程序是否异常,也不管哪个 ...

很清晰:)
回复 使用道具 举报
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是子类,需要用到子类的特有功能(如:生孩子)是子类对象在做着类型变化,父类要变化就是人生孩子,男人肯定不会吗!

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马