JAVA小问题,高手解答一下,谢谢!
class Preson
{ public String name;
public int age;
public void getInfo()
{
System.out.println(name);
System.out.println(age);
}
}
class Student extends Preson
{
String school=new String();
public void study()
{
System.out.println( "Studding ");
}
public void getInfo()
{
super.getInfo();
System.out.println(school);
}
public static void main(String[] args)
{
Preson p=new Preson();
p.name= "person ";
p.age=30;
p.getInfo();
Student s=new Student();
s.name= "student ";
s.age=16;
s.school= "清华大学 ";
s.getInfo();
s.study();
}
}
这里的String school=new String(); 是否可以用String school;来代替呢?
请详细说明
------解决方案--------------------这里的String school=new String(); 是否可以用String school;来代替呢?
---------------------------------
String school=new String():定义了一个指向String的引用,这个引用也指向了一个String对象,即使这个对象在这里是空的.
String school 只是定义了一个指向String的引用,没有指向任何String对象.
你的这里可以用来代替,但只不是过概念上的问题,因为String是不可继承和修改的,当每次为school赋值一个新的String字符串时,school都会指向新的String对象,而原来的String对象则没有引用指向,会被垃圾回收器给回收.
------解决方案--------------------可以呀
String school 就是定义了一个字符串的引用;
String school=new String(); 而这个语句就把school指向了新创建的空字符串对象
即使不指定school的初始值,对象初始化时,school也默认初始化为null
------解决方案--------------------person拼错了
飘过...
------解决方案--------------------说累了.@_@
------解决方案--------------------是可以的啊,只是一个引用而已;
个人觉得你这样写类有点问题