求助,为什么java.lang.Object类里面的finalize和clone要定义成protected。既然java里面所有的类都是继承自 Object,都可以重写这2个方法,那么这两个方法的作用域定义成protected有什么意义,或者这样做比定义成public有什么特别的好处,还是能避免什么问题?ps:好像clone方法不能继承,为什么?

解决方案 »

  1.   

    晕,怎么这个问题呢
    你去看看Java编程思想就知道了
    clone是一个特殊的方法
    它需要在子类中作相应的处理才能用
    如果要使用子类可以使用它
    就要重写定,并把访问属性设置为public
      

  2.   

    Access Levels Modifier Class Package Subclass World 
    public    Y       Y         Y      Y 
    protected Y        Y        Y      N 
    no modifier Y      Y        N         N 
    private   Y        N         N        N 
      

  3.   

    public修饰的可以被当前类,子类,包中,包外访问;
    protected修饰的可以被当前类,子类,包中访问;
    缺省的可以被当前类,包中访问;
    private修饰的只可以在当前类中访问。
      

  4.   

    访问权限尽量放低,能用private就用private,能不用public就不用public。protected方法一般在父类做模板的时候用的比较多。
      

  5.   

    JAVA在继承的时候访问权限只能越来越大,如果定义为public,那么所有子类重写后都必须定义方法为public了.子类就不能限制这两个方法的访问权限了.