A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闪亮未来 高级黑马   /  2013-11-1 23:33  /  815 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闪亮未来 于 2013-11-1 23:34 编辑

由于是零基础自学,还是比较吃力的,学的好慢,好多不是不会,是记不住。
class  PersonDemo
{
        public static void main(String[] args)
        {
                Person p = new Person("zhangsan",20);
                p.setName("lisi");
                p.speak();
                new Person();
        }
}

编译后出现这样的提示
D:\six>javac PersonDemo.java
PersonDemo.java:43: 错误: 找不到符号
                new Person();
                ^
  符号:   构造器 Person()
  位置: 类 Person
1 个错误

我基本是按照老师的代码打出来的,后面那个
new Person();的含义还不太懂,谁帮我分析下,以及错误在哪
前面还有person类的代码我就没打出来了


评分

参与人数 1技术分 +1 收起 理由
To + 1 一分鼓励

查看全部评分

5 个回复

倒序浏览
我猜测后面那个new Person()是你自己给加上的,给Person类加上一个无参的构造方法应该就能编译通过了
如果是照抄,可能抄少了一个Person类中的无参构造
回复 使用道具 举报
Person类中本来就有空参数构造函数Person(){}    Person(String name,int age){}  构造函数Person()
重载了,这时候既可以new Person();也可以new Person(String name,int age);
回复 使用道具 举报
对象一建立就会调用与之对应的构造函数,你第二个new person()调用了空参数的构造函数,你的类中没有定义空参数的构造函数,如果没有定义空参数的构造函数系统会给你添加一个,但是如果自定义了构造函数,那么系统就不会添加了。
回复 使用道具 举报
1.一个类至少有一个构造方法,没有声明时,编译时会自动生成一个无参构造方法;
2.一旦声明了一个构造方法,编译就不会再生成默认构造方法;
3.你的问题是Person类里少声明了个无参构造函数。
一下为测试代码:
class Person{
        String name;
        int        age;
       
        public Person(){}
       
        public Person(String name,int age){
                this.setName(name);
                this.setAge(age);
        }
       
        public String getName(){
                return name;
        }
       
        public void setName(String n){
                name=n;
        }
       
        public int getAge(){
                return age;
        }
       
        public void setAge(int a){
                age=a;
        }
       
        public void speak(){
                System.out.println("我的姓名是:"+this.getName()+"我的年龄是"+this.getAge()+"岁");
        }
}

/*
public class  PersonDemo
{
        public static void main(String[] args)
        {
                Person p = new Person("zhangsan",20);
                p.setName("lisi");
                p.speak();
                new Person();
        }
}
*/

public class PersonDemo{
        public static void main(String[] args){
                Person p=new Person("zhangyu",25);
                p.setName("renpan");
                p.speak();
                //Person p1=new Person();
                new Person();
        }
}
               

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
YUStone 发表于 2013-11-2 01:01
1.一个类至少有一个构造方法,没有声明时,编译时会自动生成一个无参构造方法;
2.一旦声明了一个构造方法 ...

多谢,找到问题了,原来类中的那个构造函数被我加了private给私有化了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马