问个java面向对象调用问题
public class Student2 {
private String name;
private int age;
private String sex;
private String subject;
public Student2(String name,int age){
sex = "男";
subject = "C#";
}
public Student2(String name,int age,String sex,String subject){
}
public void print(){
System.out.println("名字是:"+name+"年龄是:"+age+"性别是:"+sex+"专业是:"+ subject);
}
public class Student1Test {
public static void main(String[]agrs){
Student2 sd = new Student2("小明",20);
Student2 sd1 = new Student2("小丽",22,"女","java");
sd.print();
sd1.print();
}
}
这代码对么? 为什么调用不出来?不是括号给值?
------解决方案--------------------你只是将数据传递给了构造方法。
但是你在构造方法内并没有将 参数赋值给Student2中的成员变量。
这样再试试
public Student2(String name,int age){
this.name = name ;
this.age = age ;
sex = "男";
subject = "C#";
}
public Student2(String name,int age,String sex,String subject){
this.name = name ;
this.age = age ;
this.sex = sex;
this.subject = subject;
}
------解决方案--------------------你的输出肯定是:
名字是:null年龄是:0性别是:男专业是:C#
名字是:null年龄是:0性别是:null专业是:null
我不太明白楼主的意思,你的意思是希望 把名字直接打印出来 ? 不应该是null ?
这个是很基础的问题, 你需要在构造函数里赋值:
public Student2(String name,int age){
this.name = name;
this.age=age;
sex = "男";
subject = "C#";
}
初始化类对象本身只是调用构造函数,不会做别的事情。你必须要在构造函数中为变量name和age赋值啊。
另外一个构造函数同理。