问题1: 你的 ltest1变量没有声明就直接用了(编译的时候应该要出错的)
问题2 : 你的test2如果是一个application的话少了最重要的main()方法,如何让程序执行?这是我修改的test2,可以运行,结果是 :
------->out
------>end希望对你有帮助
public class test2 {
public static void main(String[] args){
try {
test1 ltest1 = new test1();
System.out.println("----->out");
} catch (Exception e) {
System.out.println("------->error");
} finally {
System.out.println("------->end");
}
}
}
问题2 : 你的test2如果是一个application的话少了最重要的main()方法,如何让程序执行?这是我修改的test2,可以运行,结果是 :
------->out
------>end希望对你有帮助
public class test2 {
public static void main(String[] args){
try {
test1 ltest1 = new test1();
System.out.println("----->out");
} catch (Exception e) {
System.out.println("------->error");
} finally {
System.out.println("------->end");
}
}
}
解决方案 »
- c# md5加密翻译成java语言
- 一个简单的递归算法,了解不了
- Hashtable和Hashset有啥区别
- flex得到安全策略文件后不发送socket请求,要发送两次
- 初学java,按书上所写的敲了代码, 编译也能通过!!可为什么出不来图形呢? 在线等!~~
- 一个java初始化问题?
- 怎么用JAVA写一个读者写者问题的求解啊
- Applet会是以后B/S开发的主流前台吗?
- 请问在一个系统中我打开了一个树,现在我要关掉这个树,怎么办?
- 请问闪烁短信是如何实现的,能否说一下,或提供资源!
- JButton如何实现按钮被按下,不反弹。谢谢
- 用java写的纯小型的web server,可用于嵌入式系统,适合可联网可远程控制的信息设备!
applet当然可以没有主类,但是test2.java明摆着是一个application. 请指教.
当你修改了你的程序后,由于不小心把编译后的程序输出到另一个目录。
当你执行程序的时候可能会用到以前的版本。
我也出现了楼上大哥的情况
修改后出现的。
原来的就是没有声明,没有入口处
在test2中怎么去找test1
class Test1 extends Object {
static public String check () { return null;
}
static public String check2 () { return null;
}
static public String check3 () { return null;
}
}
//请注意在test1中没有构造函数.//java 文件test2.java:
public class Test2 {
public static void main(String[] args) {
try {
/*Test1 ltest1 = */new Test1();
System.out.println("----->out");
} catch (Exception e) {
System.out.println("------->error");
} finally {
System.out.println("------->end");
}
}
}
结果为:
----->out
------->end
new Test1(); 虽然比较省事但是我还是比较主张使用标准的变量声明的语句,
这样程序会比较清晰,对于以后debug也有好处。哈哈,建议仅供参考。
我写哪个程序的意思只是想问大家这样一个问题,如果有一个像test1那样即没有构造函数,也没有继承父类的类,我new的时候,是如何运行的呢?
第二,你确实没有继承,但是你的两个文件都在同一个文件夹下,可以认为是在一个包下 ,此处用到了package的概念,你可以看看书,你也可以,将Test1移出此文件夹,再编译,那么/*test1/* ltest= new test1();就会包错了,你可以试试。
不知你说的是不是这个意思。
记着给分呀!
如果你的问题只是“有一个像test1那样即没有构造函数,也没有继承父类的类,我new的时候,是如何运行的呢?”
那么我简单的修改一下你的程序如下:
//*******java文件 test1.java:
public class Test1 {
static public void prt() {
System.out.println("test1()");
}
}
//********请注意在test1中没有构造函数.//********java 文件 test2.java:
public class Test2 {
public static void main(String[] args) {
Test1 ltest1=new Test1();
ltest1.prt();
}
}
//*******Test1.java 和 Test2.java是两个不同的文件,没有继承关系。
现在来回答你的问题:
第一,Test1虽然没有构造器,但是编译器会给他加一个默认的构造器 public Test1() {},所以没有构造器,new Test1(),也回正常执行。
第二,表面看来Test1和Test2没有什么联系,但是为什么在Test2中定义Test1的变量Test1 ltest1=new Test1(),这是因为,他们在同一个文件夹下,也就是说他们在同一个包下(默认的包)。为了检测,我们做如下测试:
现在的情况是:Test1.java和Test2.java都在d:\java下,编译正确,结果为test1().
我们将Test1.java放到d:\java\test\下,此时编译,就回报错。这是因为在同一包下,class Test1和class Test2是公有的,所以在Test2.java中就可以用 Test1 ltest1=new Test1()定义Test1的变量ltest1;而现在他们不在同一个包中,所以不能定义Test1的变量。为了正确执行,我们只需在class Test1和class Test2之前分别加上package test;和import test即可,如下:
//*******java文件 test1.java:
package test;
public class Test1 {
static public void prt() {
System.out.println("test1()");
}
}
//********java 文件 test2.java:
import test.*;
public class Test2 {
public static void main(String[] args) {
Test1 ltest1=new Test1();
ltest1.prt();
}
}
javac Test2.java
java Test2
结果:test1().