Java:由Object.clone()而引出的protected权限问题

本文详细解析了Java中Object类的protected权限问题,通过多个实例展示了与基类不在同一包中的子类如何访问受保护成员,以及在相同包中访问受保护成员的特性。同时,通过具体的代码示例,帮助读者理解protected修饰符的使用场景和限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Object.clone()

大家可能不太理解由Object.clone()而引出的protected权限问题这句话,那我们先看一段代码:
第一个类CloneClassOne

package com.ustc.sup;
public class CloneClassOne {
}

第二个类CloneClassTwo

package com.ustc.sup;

public class CloneClassTwo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CloneClassOne one=new CloneClassOne();
        one.clone();
        Object object = new Object();
        object.clone(); 
    }
}

大家觉得这段代码有没有错呢?
答案:
one.clone();和object.clone();这两句提示The method clone() from the type Object is not visible

我们会有疑问:Object类是所有类的父类,那么为什么子类不能访问父类的protected修饰的方法呢?
与基类不在同一个包中的子类,只能访问自身从基类继承而来的受保护成员,而不能访问基类实例本身的受保护成员
例如:
父类Person在包com.ustc.sub;

package com.ustc.sub;

public class Person {

    protected int a = 4;

    protected int getA() {
        return a;
    }
}

子类Manager 、Student在包com.ustc.sup

package com.ustc.sup;

import com.ustc.sub.Person;

public 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值