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

编译如下代码时,

<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


你可能感兴趣的:(Cannot reduce the visibility of the inherited method from 编译错误)