在子类中的方法如果重载了父类的方法,那么该方法的可见级别应更底或者相同,如父类中的方法是public,那么子类中方法必须是public。 
上面这句话是为什么?请详细说明一下。

解决方案 »

  1.   

    子类的范围要比父类的范围大,或者相同。
    如果父类为缺省的话,子类就不能用private修饰。
    understand ?
      

  2.   

    楼上说的就是那句话的字面意思,我还是晓得的。我是问为什么?understand ?
      

  3.   

    如果父类中的方法是public的,子类重载了,如果子类中的该方法不是public的,那么对象就不能直接调用该方法,这就使得父类中原来可以使用的方法到子类中就不可用了,这样的子类有什么用?
      

  4.   

    正确的说法:如果子类覆盖了超类(也叫父类、基类)的方法,那么该方法的访问级别(也有叫可见级别的)与被覆盖方法的访问级别相比可以相同或者更广。
    例如:超类方法访问级别是 protected,那么子类方法的访问级别可以是 protected(相同)或 public(更广)。如果超类方法的访问级别已经是 public 了,那子类的只能是 public,因为没有更广的访问级别了。
    原因:子类不能修改超类定义的接口。一旦子类能将超类的公有方法覆盖并且私有化,那子类就修改了超类定义的接口了。
      

  5.   

    类访问修饰符
    private,protected:只能用于内部类
    public:可以被同一包或不同包的类访问
    缺省:可以被同一包的类访问,但不能被其它包的类访问,即使用import引入或用包名.类名也不行
    public成员:所有的类都可以访问
    protected成员可被子类访问,不管是同一个包还是不同包,同一个包中非子类需要通过对象访问
    private成员:只有自身类才能访问,其它类一概不能访问
    缺省:称为friendly,可被同一包的所有的类访问好好看这个访问修饰符的基本用法...也许你就会明白怎么使用了..
      

  6.   

    "一旦子类能将超类的公有方法覆盖并且私有化,那子类就修改了超类定义的接口了"那又会出现什么结果? 
    我不清楚的地方就在这里。子类覆盖超类的方法的目的是什么?为什么不能私有化?

    ding
      

  7.   

    子类重写了父类的方法,关于修饰符使用,规则是越来越宽松。
    打个比方就是儿子从父亲身上学来了本事,而且本事越来越明显。
    总结下 :
    父类方法修饰符  子类修饰符号
    private        " " protected public 
    " "              protected public
    protected      public
    public         public  
      

  8.   

    重载和覆盖是俩个概念,重载都不是一个函数了,根据参数调用需要的,根本用不着限制什么可见范围,而覆盖是完全相同的俩个方法,只不过一个在超类,一个在子类,此时必须要求子类的可见范围不能缩小,理由如9楼。
    重载,都不是一个函数了,那为什么要重载,直接写一个不就行了。
    覆盖,也一样啊。
    是不是重载和覆盖都出现在继承extends或实现implement一个类时?覆盖范围缩小了,后果会怎么样?