当前位置: 代码迷 >> Java相关 >> [求助]想不通,就来发贴了*_*
  详细解决方案

[求助]想不通,就来发贴了*_*

热度:231   发布时间:2006-03-04 14:28:00.0
[求助]想不通,就来发贴了*_*

在类中用this可以引用类本身,为什么在静态方法main中使用它会出错?


我们经常用这个语句: System.out.println("....");
在这里我是这样理解的,System是个类,out是类变量,println(String s)应该是个方法,
用"."连接起来,表示的是使用System的类变量out,可为什么在类变量后面要加个println方法,
怎么会用这样的表达式,想不通!


static AudioClip ac1,ac2,ac3;

try{
URL u1=this.getClass().getResource("da.wav");
URL u2=this.getClass().getResource("xiao.wav");
URL u3=this.getClass().getResource("dui.wav");
ac1=Applet.newAudioClip(u1);
ac2=Applet.newAudioClip(u2);
ac3=Applet.newAudioClip(u3);
}catch(Exception e){}
上面的代码中使用AudioClip对象时用到了,Applet.newAudioClip();
newAudioClip()应该是抽象类AudioClip的方法,为什么在使用时
要引用Applet.,而不用AudioClip.newAudioClip();




最后一个,在使用javax.swing.*;中的组件时,经常看到这样的语句
窗口.getContentPane().add("Center",类的实例);
为什么要用getContentPane();表示的是什么意思,在AWT中添加窗口都不需要这些.

请大家给我讲讲,谢了

搜索更多相关的解决方案: 表达式  

----------------解决方案--------------------------------------------------------
在类中用this可以引用类本身,为什么在静态方法main中使用它会出错?
因为this是指类的实例一个引用,而并不指类本身,所以它在静态方法main中使用会出错
main是属于类的,而this是属于某一个实例的。



我们经常用这个语句: System.out.println("....");
在这里我是这样理解的,System是个类,out是类变量,println(String s)应该是个方法,
用"."连接起来,表示的是使用System的类变量out,可为什么在类变量后面要加个println方法,
怎么会用这样的表达式,想不通!
out 是类System的一个静态变量,println是一个方法,是out的一个方法,因为out是PrintStream的一个实例,所以它可以有这个方法,你肯定是没有看System的源文件,你可以找来看看它里面是怎么定义out
public final static PrintStream out = nullPrintStream();


static AudioClip ac1,ac2,ac3;

try{
URL u1=this.getClass().getResource("da.wav");
URL u2=this.getClass().getResource("xiao.wav");
URL u3=this.getClass().getResource("dui.wav");
ac1=Applet.newAudioClip(u1);
ac2=Applet.newAudioClip(u2);
ac3=Applet.newAudioClip(u3);
}catch(Exception e){}
上面的代码中使用AudioClip对象时用到了,Applet.newAudioClip();
newAudioClip()应该是抽象类AudioClip的方法,为什么在使用时
要引用Applet.,而不用AudioClip.newAudioClip();

是抽象类AudioClip的方法吗?你可以找AudioClip.java看看,它只一个接口而已,在类Applet定义了一个静态方法,让你可以得到一个AudioClip的引用。因为接口你是不能直接把它实例化的,比如AudioClip au=new AudioClip();这是错的。


最后一个,在使用javax.swing.*;中的组件时,经常看到这样的语句
窗口.getContentPane().add("Center",类的实例);
为什么要用getContentPane();表示的是什么意思,在AWT中添加窗口都不需要这些.
getContentPane()是一个使用在顶级窗口中的方法,它的意思是得到当前窗口的内容面板,它所返回的是一个容器Container的引用,因为顶级窗口不能直接将东西放在它们上面,除了JFrame之外,还有JDialog,它们都 不能将东西直接放在它们上面,而要先得到它们的内容窗格getContentPane().
UnderStand?
----------------解决方案--------------------------------------------------------
THANK YOU
----------------解决方案--------------------------------------------------------
  相关解决方案