我们可以在派生类中@Override一个超类的公共方法吗?

时间:2013-12-23 06:14:25

标签: java core

请参阅下面的代码以获取我的问题示例:

    class Person  
    {  
        private  String name;  
        public  
            String toString()  
            {  
                return this.name;  
            }  
    }

    class Student extends Person  
    {  
       private  int no_of_courses;  
       public  
           @Override String toString()  {  return "Student " + super.toString();  }
    }  
    class SuperDemo  
    {  
        public static void main(String[] args)  
        {  
            Person p = new Student("ABC,"XYZ");  
            System.out.println(p.toString());  
        }  
    }

我们可以在派生类中重写超类的公共方法吗? Person类具有构造函数:

Person(String name)

Student类具有构造函数:

Student(String name) { super(name); }

1 个答案:

答案 0 :(得分:4)

是。当您从toString()覆盖Object时,您已经自然地这样做了。

你无法覆盖:

  • 标记为final
  • 的任何内容
  • 任何static
  • 任何private

您也无法降低重写方法的可见性;也就是说,您无法将public方法覆盖为protected方法。