JAVA中的protected
发布网友
发布时间:2022-05-27 18:09
我来回答
共4个回答
热心网友
时间:2023-11-12 15:55
对于Object类,它的clone方法实现如下:
protected native Object clone() throws CloneNotSupportedException;
也就是说,如果你在它的子类中没有覆盖clone方法,永远都是抛出一个CloneNotSupportedException,这就是为什么一调用就失败。
要想使用的话,不仅要让子类实现Cloneable接口,还要覆盖这个clone方法。
如果用protected修饰,它的子类是可以访问的,所以子类调用的其实是Object的clone方法,而这个方法永远抛出一个CloneNotSupportedException:比如下面的代码是可以正常运行的:
public class Clone
{
public static void main(String[] args)
{
Clone c = new Clone();
try
{
c.clone();
}
catch (CloneNotSupportedException e)
{
e.printStackTrace();
}
}
}
如果Object的clone方法子类不能访问,那么c.clone()这句会编译失败。
Object类的这个clone方法完全是为了子类覆盖它服务的,并不是让子类直接调用的,这也就是为什么在覆盖clone方法时一般到调用super.clone()的原因。
clone方法是可以被覆盖的,但是必须实现Cloneable接口,所以你覆盖后,它就不会调用父类的方法,而调用你覆盖后的方法。
不知道我说清楚了没有。
热心网友
时间:2023-11-12 15:56
private 谁的都不访问
protected 任何包的子类都可以访问
public 任何地方都可以访问
默认(不是上面的三个) 只有同一个包才可以访问
热心网友
时间:2023-11-12 15:56
如果子类和父类不是在同一个包里,子类是不能继承父类的友好变量和友好方法的。其他类访问友好变量和友好方法也是同理。
热心网友
时间:2023-11-12 15:57
修饰符 同类中 同一包 子类 全局
private Y N N N
default Y Y N N
protected Y Y Y N
Public Y Y Y Y
希望可以帮到你