public class class1{
private String Name;
public void giveName() {
Name="111aChen Hoo";
}
public String getName() {
return Name;
}
}
public class class2 extends class1{
public static void main(String args[]) {
class1 c = new class1();
System.out.println(c.getName());
}
}
我预期得到的结果是111aChen Hoo,可是控制台输出的是null,不知道哪里错了,求指导,谢谢大家。
你的class1没有构造函数,所以是调用的默认的构造函数,Name值为null,后面你直接输出了c.getName() ,当然会输出null,因为你根本没有调用c.giveName()
giveName()函数没有被调用,所以Name没有被实例化,在class1 c = new class1();后面再写一句代码c.giveName();就可以了。
public class class2 extends class1{
public static void main(String args[]) {
class1 c = new class1();
c.giveName();
System.out.println(c.getName());
}
你并没有调用giveName(),Name只是声明了并没有赋值,所以系统默认赋null
一般写一个set方法 给变量赋值this.name=
一个get方法 return this.name
先赋值再取值 就不为空(null)了
你设置的属性是私有,这样你就得提供该set和get方法,而你只提供了一个get方法
集体回复,我明白了,谢谢你们
没调用赋值的方法(凑字..........................................)
你没有调用giveName()方法,意味着你只是创建了一个name变量,并没有对他进行初始化赋值,自然而然,你通过getName方法进行求值,并不能获得你所想要的值,也就是返回了null
你没有调用giveName()方法,意味着你只是创建了一个name变量,并没有对他进行初始化赋值,自然而然,你通过getName方法进行求值,并不能获得你所想要的值,也就是返回了null
先调用giveName()再调用getName()就ok
要先调用giveName函数才可以,多调试一下程序就好了
使用了 new 关键字会加载一个类所有的静态变量。但是你的方法需要自己手动去调用才会执行。
class1类中的成员变量Name是private(私有的),只能被类class1调用。虽然class2是class1的子类,但是也不能调用。程序应改为
public class class1{
public String Name;
public void giveName() {
Name="111aChen Hoo";
}
public String getName() {
return Name;
}
}
public class class2 extends class1{
public static void main(String args[]) {
class1 c = new class1();
System.out.println(c.getName());
}
}
先调用giveName()再调用getName(),或者加上一个name属性的set方法来赋值也行
..没调方法..咋还有说set get的..
public class class1{
private String Name="111aChen Hoo";
public void giveName() {
Name="222aChen Hoo";
}
public String getName() {
return Name;
}
}
这样按你写的输出的就是 你想要的结果 只是声明了这个变量而已。赋值只作用到了那个方法里
这个就很有意思了,我也犯过这样的错误。成员变量与局部变量的问题
你的Name没有进行初始化
this.Name="111aChen Hoo";
giveName()这个方法根本没有执行 你调用的是getName() 而且你声明变量的时候没有初始化所以
肯定为null了
没调用giveName方法;
===============================强行混积分==================================
==============================凑字数大法===================================
没有调用giveName()方法
你这giveName()又不是构造函数,当然为空了啊
class1 c = new class1();
//需要实例化
c.giveName();
System.out.println(c.getName());
你只new出来一个变量但是没有给他赋初值,调用你的giveName()
你需要先通过giveName()方法先将Name赋值,才能通过getName()取得到,还有就是你的命名要规范,否则到后期学习会出现各种问题
首先你没有创建构造函数,其次你没有调用调用giveName(),然后再c.getName()就ok
你没有给name属性赋值
你没有使用giveName给Name赋值,自然就没有值了
你在class1中提供了set方法,但是没有调用,当然就没有初始值。必须先调用giveName().或者直接在构造函数中初始化。