当前位置: 代码迷 >> J2SE >> Java匿名的内部类为何不完全使用继承,而只能具有继承的功能
  详细解决方案

Java匿名的内部类为何不完全使用继承,而只能具有继承的功能

热度:70   发布时间:2016-04-23 20:40:28.0
Java匿名的内部类为什么不完全使用继承,而只能具有继承的功能?
本帖最后由 u012927848 于 2014-06-08 17:00:57 编辑
具体代码如下:
Image bg = new ImageIcon("images/background.jpg").getImage();
// 如果能完全使用继承,那么这个匿名内部类是增加了新的构造方法和属性,用新的构造方法去构造,实际上却不可以!
JPanel backPanel = new JPanel(bg) { // 用新的构造方法去构造 
Image bg = null; // 新增的属性
JPanel(Image bg) { // 新增的构造方法
super();
this.bg = bg;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int x = this.getParent().getWidth();
int y = this.getParent().getHeight();
setSize(x, y);
g.drawImage(bg, 0, 0, x, y, null);
super.paintComponent(g);
}
};

这到底是为什么?难道是我用它的父类来引用它,而父类中没有新的构造方法所以不能使用?
------解决方案--------------------
因为他是匿名的,而构造方法要以类名为方法名,所以你无法写一个合乎标准的构造函数
比如你那个JPanel的例子,你写一个叫JPanel的方法可以,但它不能作为构造方法,因为这个类没有名字
  相关解决方案