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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 叶绍亮 中级黑马   /  2012-3-16 22:00  /  1494 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 叶绍亮 于 2012-3-16 22:01 编辑

class  Student
{
        private String name;
        private int age;
        private int num;
        Student(String n,int a,int b)
        {
                name=n;
                age=a;
                num=b;
                out();
        }
        void out()
        {
                System.out.println("姓名:"+name+",年龄:"+age+",成绩:"+num);
        }
}
class StudentDemo
{
        public static void main(String[] args)
        {
                Student p1 = new Student("lisi",10,56);
                Student p2 = new Student("wangwu",23,65);
        }
}
上面的可以运行,下面这样的就不行 ,原理是什么?不明白啊。请教啊。
class  Student
{
        private String name;
        private int age;
        private int num;
        Student(String n,int a,int b)
        {
                name=n;
                age=a;
                num=b;
        }
        void out()
        {
                System.out.println("姓名:"+name+",年龄:"+age+",成绩:"+num);
        }
}
class StudentDemo
{
        public static void main(String[] args)
        {
                Student p1 = new Student("lisi",10,56);
                Student p2 = new Student("wangwu",23,65);
                p3.out();
        }
}

4 个回复

倒序浏览
p3似乎没有创建对象啊,只要不是static修饰的方法,都要创建对象才能使用,如果是static修饰的方法,可以用 类名.方法名 的格式来调用.

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
p3.out();问题在这里,没有建立P3 对象,当然不能用p3调用功能
回复 使用道具 举报
p3.out();问题在这里,没有建立P3 对象,当然不能用p3调用功能
回复 使用道具 举报
语句:Student P1 = new Student("X",11,12);
解读为:
"Student P1"用于在内存里建立一个Student类的引用,
"new Student("X",11,12)"调用构造函数在内存建立一个Student类的具体对象,
"=" 将建立的对象地址值赋值给P1,这时P1才有了具体的存在意义,也才可以使用Student类的方法,

你的P3根本就没有指向一个对象,甚至没有说明归属于哪一个类型,完全凭空生出来的变量名,所以不能能调用Student的方法。
也就是说,你不去声明,电脑是不会智能的去猜测P3和P1、P2是否同一个类型的,在电脑那边,P3在没有声明的情况下与@##¥之类的乱码没有差别。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马