黑马程序员技术交流社区
标题:
关于构造函数的问题
[打印本页]
作者:
叶绍亮
时间:
2012-3-16 22:00
标题:
关于构造函数的问题
本帖最后由 叶绍亮 于 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();
}
}
作者:
秦超
时间:
2012-3-16 22:07
p3似乎没有创建对象啊,只要不是static修饰的方法,都要创建对象才能使用,如果是static修饰的方法,可以用 类名.方法名 的格式来调用.
作者:
胡元
时间:
2012-3-16 22:25
p3.out();问题在这里,没有建立P3 对象,当然不能用p3调用功能
作者:
李深山
时间:
2012-3-16 22:33
p3.out();问题在这里,没有建立P3 对象,当然不能用p3调用功能
作者:
丁佼
时间:
2012-3-16 22:46
语句: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在没有声明的情况下与@##¥之类的乱码没有差别。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2