1、用实例作参数时,何时用class a形式,何时用new class()形式?
比如:
public void paint(Graphics g){}为什么不能写成public void paint(new Graphics()){}?
而addKeyListener(new KeyAdapter(){});就不能写成addKeyListener(KeyAdapter k{});? 2、为什么我用eclipse运行有参数传递的applet时,参数总是传递不了,而在浏览器中查看时一切正常?
<applet code="A" width=300 higth=240>
<param name=m value=n>
</applet>
在eclipse中,m的值n在小应用程序中用getParameter("m")方法传递,没有错误,但结果却是发现不了。
比如:
public void paint(Graphics g){}为什么不能写成public void paint(new Graphics()){}?
而addKeyListener(new KeyAdapter(){});就不能写成addKeyListener(KeyAdapter k{});? 2、为什么我用eclipse运行有参数传递的applet时,参数总是传递不了,而在浏览器中查看时一切正常?
<applet code="A" width=300 higth=240>
<param name=m value=n>
</applet>
在eclipse中,m的值n在小应用程序中用getParameter("m")方法传递,没有错误,但结果却是发现不了。
如果用已经有的对象,则不用new
比如:
public void paint(Graphics g){}为什么不能写成public void paint(new Graphics()){}?
而addKeyListener(new KeyAdapter(){});就不能写成addKeyListener(KeyAdapter k{});?==============
方法在声明时要指定形参的类型. public void paint(Graphics g){}
调用方法时只能给出实参:
a.paint(new Graphics()) // 相当于 graphics = new Graphics(); a.praint(graphics);
addKeyListener(new KeyAdapter(){});
这是匿名类的用法. 相当于:
class AKeyListener extend KeyAdapter {
//....
}
akeylistener = new AKeyListener();
addKeyListener(akeylistener);
所以 new KeyAdapter(){} 是定义了一个新类并创建了新类的对象. 放在一步完成.
public void paint(Graphics g){} 关于这个的话,或许可以参考下 public void paint(int g){},它只是说明这个方法的参数是什么类型的;不知道我上面的解释可以否.