黑马程序员技术交流社区

标题: 关于定义class类的问题?求解 [打印本页]

作者: 席杰    时间: 2014-7-31 16:51
标题: 关于定义class类的问题?求解
本帖最后由 席杰 于 2014-8-6 20:27 编辑

今天我学习其他对象时,打开API,查看System类,忽然看见他的定义竟然是:public final class System,这时我一头雾水。这里怎么定义的是final,难道定义class时可以使用final吗?这里使用final与不使用final的类有什么区别吗?

作者: 江苏孙浩    时间: 2014-7-31 17:03
final表示该类不允许被其他类继承
作者: 李奇s    时间: 2014-7-31 17:25
被final修饰的类为最终类不能产生子类
作者: 席杰    时间: 2014-7-31 17:33
江苏孙浩 发表于 2014-7-31 17:03
final表示该类不允许被其他类继承

除了这一点没有其他区别了吧?那System不能被实例化,里面定义的全部是静态方法,又是什么原因,跟final没有关系吗?
作者: 江苏孙浩    时间: 2014-7-31 18:05
席杰 发表于 2014-7-31 17:33
除了这一点没有其他区别了吧?那System不能被实例化,里面定义的全部是静态方法,又是什么原因,跟final ...

这些和final应该是无关的
作者: 段金福    时间: 2014-7-31 18:07
不能被继承:lol
作者: 怀念黑海岸    时间: 2014-7-31 20:55
    如果一个类能被继承,那么类中的很多方法就能被重写,就拿String类来说吧,也是final修饰的,但是里面的方法全都是对外公开的,你只能用我这个类中定义好了的方法,但是你不能按照你的想法来对我定义的方法实现方式进行修改,从而保证了安全性。一个类被定义成final的话最主要的原因还是因为安全性的考虑吧,特别是那些工具类更是如此。
作者: 席杰    时间: 2014-8-6 20:25
江苏孙浩 发表于 2014-7-31 18:05
这些和final应该是无关的

谢谢你的解答。
作者: 席杰    时间: 2014-8-6 20:27
怀念黑海岸 发表于 2014-7-31 20:55
如果一个类能被继承,那么类中的很多方法就能被重写,就拿String类来说吧,也是final修饰的,但是里面 ...

谢谢了。:)解释的很清楚,明白了。
作者: 南柯一梦    时间: 2014-8-6 20:57
用final类修饰类时,代表这个类不可以有子类,不允许有子类继承这个类
作者: qingxi1    时间: 2014-8-7 06:57
被final修饰的是最终类,不可以被继承
作者: F@C    时间: 2014-8-7 14:48
进来学习




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