protected是保护那个包,一个家族的访问权,它的同一个包里的子类可以调用,其他包就不行,避免被别人继承而做clone()操作。
解决方案 »
- 按照特定格式,列出目录下面所有的子目录和文件
- JDK帮忙文档中:Direct Known Subclasses: 怎么翻译?
- 请教ArrayList的用法,有个疑问想请大家帮忙看下。
- 如何在页面中通过提示下载,安装JRE环境?
- 用applet可以实现从服务器上下载文件到客户端,而不出现保存对话框么
- 如何使用一个线程模仿挂机功能。
- 我的困惑,这一切到底该怎么去对待
- 有谁用过Search Maker pro 2.1并知道注册码?或能提供类似的软件.[Search Maker Pro可以自动搜索一个网站,对所有页面进行索引,然后生成
- 60分小问题,请问JAVA下的延时函数是什么?
- 又是一个java的菜问题,大家来抢分呀。:)
- 请问怎么样对JTextArea文本添加新的文本?谢谢
- 计算阶层
而不是Employee[name....]? 我的理由是Manager中的toString()中用的是super
这说明是调用的是父类方法那理所应该得到父类Employee的类名?是调用的父类的方法,但该方法到底应该怎么执行,取决于当前实例,不取决于代码写在哪里(父类还是子类),当前实例是子类,那结果就是子类的结果。
当你覆盖了超类的方法的时候那么在编译过程中程序一定是在完成构造函数之前就已经决定了什么是真正的方法,在你的程序中在对象建立之前他的方法就已经完成了,那么当对象调用toString方法时,当然就是现实自己(当前实例)的名字了。你也可以理解为你那个super.toString()就是一种简写吧。
其次讨论你的第一个问题:
Object.clone()方法定义为保护方式,因为子类也需要限制使用克隆,但是如果把它在Object中就定义为public,则子类根本不能够采取更严格的限制。
我们都知道一个新的类多数情况下都是通过 组合(combination) 方式完成的。
举个例子吧:
汽车(Car)类 那么Car的对象---BMW (宝马车)extends Car就有了自己的那些轮胎/车架/发动机,这些东东,这时,夏利 extends Car 也有了相应的基础东东,
(我们都知道 Car extends Object)
1。如果 Object.clone()----public 那么可以想象 只要 夏利 在他的定义内 调用 宝马的clone方法 那么它也能买BMW了,这不就出现了“盗版”!!
2。如果 -----protected 那么 只有夏利 号称 是宝马公司的子公司(继承),或者合作伙伴(同一个包)才能生产宝马,否则 充其量 只能拿来看看但是不能生产。
3。如果是----private 那么这下惨了,在clone()方式中我们不能调用 super.clone()来建立完成克隆,连BMW公司都破产了。