首页 > 其他 > 详细

子类的对象为什么不能直接调用 clone()/finalize() 方法

时间:2020-08-29 11:16:52      阅读:109      评论:0      收藏:0      [点我收藏+]

Java 中所有的类都是 Object 类的子类

? ?

访问权限

?

子类

其他包

描述

public ?

?

?

?

?

对任何人都是可用的

protected

?

?

?

? 

继承的类可以访问以及和 default 一样的权限

default ?

?

?

?

?

包访问权限,即在整个包内均可被访问

private

?

?

?

?

除类型创建者和类型的内部方法之外的任何人都不能访问的元素

? ?

? ?

技术分享图片

? ?

首先,我们知道 Object 类中的 clone()/finalize() 方法是 protected 修饰的,表明这两个方法只能在同包及其子类下能被访问

? ?

这里值得注意,只是在同包下,或者只是子孙类内部才可以访问,兄弟类是无法通过创建对象访问的被 protected 修饰的方法

? ?

技术分享图片

? ?

? ?

  • 由于所有类都是继承自 Object 类,所有他们自身并不具备 clone()/finalize() 方法
  • 他们所调用的 clone()/finalize() 方法是使用其祖先类 Object 中的 clone()/finalize() 方法;
  • 但是 clone()/finalize() 方法是 protected 修饰的,只能被他的同一类,包或子孙类调用;注意:这里的他指的是 Object
  • 如果把 Teacher 类和 Student 类看作一对兄弟,那么 clone()/finalize() 方法就是他们的父亲 Object 留给他们的遗产
  • Teacher 可以使用父亲留给他的遗产,Student 可以使用父亲留给他的遗产
  • 如果 Teacher 想要使用 Student 类(Student student = new Student ();)中没有公开的财产(变量和方法)尤其是受保护的遗产(student .finalize();)显然是不行的。

    ? ?

    ? ?

    技术分享图片

子类的对象为什么不能直接调用 clone()/finalize() 方法

原文:https://www.cnblogs.com/sebastian-tyd/p/13581256.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!