大家帮忙看看这个JAVA的小程序哪里有错误。谢谢。
packagetest;publicclassTest{Stringtext;publicvoidTest(Strings){this.text=s;}publicsta...
package test;
public class Test {
String text;
public void Test(String s){
this.text = s;
}
public static void main(String[] args) {
Test test = new Test("ABC");
System.out.println(test);
}
} 展开
public class Test {
String text;
public void Test(String s){
this.text = s;
}
public static void main(String[] args) {
Test test = new Test("ABC");
System.out.println(test);
}
} 展开
5个回答
展开全部
关键错误是:当你显式的定义了有参构造方法后,你就必须要显式的构造一个无参方法!这是至关重要的!!其他都是一些无关痛痒的错误。
修改如下:
package test;
public class Test {
String text = null;
//这里我说一下,你不写VOID和写VOID是一样的,无关紧要,因为构
//造参数不写返回值,默认就是VOID。但是你想定义有返回值(不
//是VOID)的构造参数就是不合法的了。
public void Test(String s){ //有参构造
this.text = s;
}
public void Test() {}//无参构造
public static void main(String[] args) {
Test test = new Test("ABC");
//这里我也说一下,你直接打印TEST语法是没有错的,但是他得不到
//你想要的ABC,而是打印出对象的哈希值。因为打印对象程序会自动
//调用最终父类OBJECT的方法来打印。所以如果你想打印ABC,就
//用System.out.println(test.text);
System.out.println(test);
}
}
试试看还有没有编译错误吧。JAVA优势就是封装,继承 和多态,所以参考一下 房爱德 的建议是好的。
修改如下:
package test;
public class Test {
String text = null;
//这里我说一下,你不写VOID和写VOID是一样的,无关紧要,因为构
//造参数不写返回值,默认就是VOID。但是你想定义有返回值(不
//是VOID)的构造参数就是不合法的了。
public void Test(String s){ //有参构造
this.text = s;
}
public void Test() {}//无参构造
public static void main(String[] args) {
Test test = new Test("ABC");
//这里我也说一下,你直接打印TEST语法是没有错的,但是他得不到
//你想要的ABC,而是打印出对象的哈希值。因为打印对象程序会自动
//调用最终父类OBJECT的方法来打印。所以如果你想打印ABC,就
//用System.out.println(test.text);
System.out.println(test);
}
}
试试看还有没有编译错误吧。JAVA优势就是封装,继承 和多态,所以参考一下 房爱德 的建议是好的。
展开全部
package test;
public class Test {
String text;
//构造方法改一下,构造方法怎么能有返回值呢
public Test(String s){
this.text = s;
}
public static void main(String[] args) {
Test test = new Test("ABC");
//这里改成这个就可以了
System.out.println(test.text);
}
}
public class Test {
String text;
//构造方法改一下,构造方法怎么能有返回值呢
public Test(String s){
this.text = s;
}
public static void main(String[] args) {
Test test = new Test("ABC");
//这里改成这个就可以了
System.out.println(test.text);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去掉void,构造函数没有返回值标识符,test改为test.text 如下:
package test;
public class Test {
String text;
public Test(String s){
this.text = s;
}
public static void main(String[] args) {
Test test = new Test("ABC");
System.out.println(test.text);
}
}
package test;
public class Test {
String text;
public Test(String s){
this.text = s;
}
public static void main(String[] args) {
Test test = new Test("ABC");
System.out.println(test.text);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.out.println(test); // println 方法不能打印test对象,
要想打印,就用test.test打印test属性
要想打印,就用test.test打印test属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用System.out.println(test.text);在此处能解决问题但原因如下:
1 test类中的text属性是"包"访问权限.所以在这个例子中test.text 能 解决问题!
2 但这不符合面向对象的规则,test类中的text属性也是不安全的.最好这样改动:
public class Test {
private String text;
public void Test(String s){
this.text = s;
}
public String getTest(){
return this.text;
}
}
这样只有在test类内部才可以访问text属性.笔者个人认为java的
面向对象优势就在此,可以封装属性.不这样做,java与其他编程语言就一样了!
1 test类中的text属性是"包"访问权限.所以在这个例子中test.text 能 解决问题!
2 但这不符合面向对象的规则,test类中的text属性也是不安全的.最好这样改动:
public class Test {
private String text;
public void Test(String s){
this.text = s;
}
public String getTest(){
return this.text;
}
}
这样只有在test类内部才可以访问text属性.笔者个人认为java的
面向对象优势就在此,可以封装属性.不这样做,java与其他编程语言就一样了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询