Cannot reduce the visibility of the inherited method from 编译错误

来源:互联网 发布:linux c书籍 编辑:程序博客网 时间:2024/05/16 13:59
编译如下代码时,

<pre name="code" class="java">JDesktopPane DESKTOP_PANE = new JDesktopPane() {protected void paintComponent(Graphics g) {g.drawImage(image, 0, 0, getWidth(), getHeight(), null);//g.drawImage(image, 0, 0, 500, 400, null);}};

一切正常。编译如下代码时,

JDesktopPane DESKTOP_PANE = new JDesktopPane() {//protected void paintComponent(Graphics g) {<pre name="code" class="java">                                 protected  void paint(Graphics g) {g.drawImage(image, 0, 0, getWidth(), getHeight(), null);//g.drawImage(image, 0, 0, 500, 400, null);}};

发生错误,提示如下信息:

Multiple markers at this line
    - overrides javax.swing.JLayeredPane.paint
    - Cannot reduce the visibility of the inherited method from 

经查  JDesktopPane有paintComponet 和paint 方法。具体而言:

1. paintComponet继承自javax.swing.JComponent。原型: protected void paintComponent(Graphics g)

2. paint 继承自  javax.swing.JLayeredPane。 原型: public void paint(Graphics g)


发生错误的原因 是复写父类的方法,父类是 public 子类变为了protected,违反了 两同两小一大的 一大原则。故错误。修改为public 正确。


http://stackoverflow.com/questions/9035052/cannot-reduce-visibility-of-method-inherited-method-from-parent

http://stackoverflow.com/questions/6851612/java-access-modifiers-and-overriding-methods


0 0
原创粉丝点击