黑马程序员技术交流社区

标题: 自学java基础没人教,又遇到问题啦,嘿嘿,求大神帮忙 [打印本页]

作者: 潘成旺    时间: 2015-2-26 18:48
标题: 自学java基础没人教,又遇到问题啦,嘿嘿,求大神帮忙
这段代码按照我的思路貌似没啥问题呀,为毛报错??
代码:class StaticDemo{
        private String name;
        private int age;
        static String banji;

        public void setName(String name){
                this.name = name;
        }
        public String getName(){
                return name;
        }
        public void setAge(int age){
                this.age = age;
        }
        public int getAge(){
                return age;
        }
        public void setBanJi(String banji){
                this.banji = banji;
        }
        public String getBanJi(){
                return banji;
        }
        public StaticDemo(String name,int age,String banji){
                this.name = name;
                this.age = age;
                this.banji = banji;
        }
}
class StaticTest {
        public static void main(String[] args){
                StaticDemo sd = new StaticDemo();
                sd.setName("张三");
                System.out.println(sd.getName());
                sd.setAge(17);
                System.out.println(sd.getAge());
                sd.setBanJi("1班");
                System.out.println(sd.getBanJi());
                StaticDemo sdd = new StaticDemo();
                System.out.println(sdd.StaticDemo("李四",17));

               
        }
}
报错:---------- javac ----------
StaticTest.java:32: 错误: 无法将类 StaticDemo中的构造器 StaticDemo应用到给定类型;
                StaticDemo sd = new StaticDemo();
                                ^
  需要: String,int,String
  找到: 没有参数
  原因: 实际参数列表和形式参数列表长度不同
StaticTest.java:39: 错误: 无法将类 StaticDemo中的构造器 StaticDemo应用到给定类型;
                StaticDemo sdd = new StaticDemo();
                                 ^
  需要: String,int,String
  找到: 没有参数
  原因: 实际参数列表和形式参数列表长度不同
StaticTest.java:40: 错误: 找不到符号
                System.out.println(sdd.StaticDemo("刘亦菲",17));
                                      ^
  符号:   方法 StaticDemo(String,int)
  位置: 类型为StaticDemo的变量 sdd
3 个错误

输出完成 (耗时 1 秒) - 正常终止


作者: 西瓜PK刀子    时间: 2015-2-26 19:43
是静态造成的,你在成员类型定义时定义了一个静态的成员变量:banji   而在构造函数中是没法使用它的!因为静态成员是先于对象存在的。
作者: 西瓜PK刀子    时间: 2015-2-26 19:46
还有  你自己定义了一个带参数的构造函数,覆盖了默认的无参构造函数,所以在主函数中创建对象时要使用有参数的构造函数来对创建的对象进行初始化!
作者: yunxiao    时间: 2015-2-26 19:59
我同意上面的分析。。。。
作者: jwl245322883    时间: 2015-2-26 21:36
来看看打个酱油
作者: 潘成旺    时间: 2015-2-26 21:46
西瓜PK刀子 发表于 2015-2-26 19:43
是静态造成的,你在成员类型定义时定义了一个静态的成员变量:banji   而在构造函数中是没法使用它的!因为 ...

那请问怎样是对的呢??  我学这里都被绕晕了,这个就是我要测试静态的代码  我设置了一个静态的班级,不是不加班级就可以用的吗?  大神求解惑
作者: 鲍阳    时间: 2015-2-27 00:21
楼上好厉害




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2