日期:2014-05-20  浏览次数:20678 次

JAVA学习中的问题
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 ")方法传递,没有错误,但结果却是发现不了。

------解决方案--------------------
1、用实例作参数时,何时用class a形式,何时用new class()形式?
比如:
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(){} 是定义了一个新类并创建了新类的对象. 放在一步完成.