书上说:当重载一个构造函数时,首先可以提供一个基本的版本,然后所有其他版本的构造寒素可以使用
this(paramenterList),替换部分或全部参数,再来调用这个基本构造函数,以免代码的重复。
//以下Student类是书中例题,thisPointerTest类是鄙人自己补充的,在编译时出错!class Student{
private String name;
private double gpa;
public Student(){
this("unknow",-1.0);
}
public Student(String _name){
this(_name,-1.0);
}
public Student(double _gpa){
this("unknow",_gpa);
}
public void showStudent(){
System.out.println("Student: "+name);
if(gpa>0.0){
System.out.println("Gpa: "+gpa);
}
else
System.out.println();
}
}public class thisPointerTest {
public static void main(String []args){
Student st1=new Student();
Student st2=new Student("lau");
Student st3=new Student(5.0);
st1.showStudent();
st2.showStudent();
st3.showStudent();
}
}
this(paramenterList),替换部分或全部参数,再来调用这个基本构造函数,以免代码的重复。
//以下Student类是书中例题,thisPointerTest类是鄙人自己补充的,在编译时出错!class Student{
private String name;
private double gpa;
public Student(){
this("unknow",-1.0);
}
public Student(String _name){
this(_name,-1.0);
}
public Student(double _gpa){
this("unknow",_gpa);
}
public void showStudent(){
System.out.println("Student: "+name);
if(gpa>0.0){
System.out.println("Gpa: "+gpa);
}
else
System.out.println();
}
}public class thisPointerTest {
public static void main(String []args){
Student st1=new Student();
Student st2=new Student("lau");
Student st3=new Student(5.0);
st1.showStudent();
st2.showStudent();
st3.showStudent();
}
}
你又没有一个student(string,double)型的构造函数
Student(String _name, double _gpa)
修改如下:
class Student{
private String name;
private double gpa;
public Student(String _name,double _gpa){
//添加你的操作,this(String _name,double _gbp)就是这个构造器。如:
this.name=_name;
this.gpa=_gpa;
}
public Student(){
this("unknow",-1.0);
}
public Student(String _name){
this(_name,-1.0);
}
public Student(double _gpa){
this("unknow",_gpa);
}
public void showStudent(){
System.out.println("Student: "+name);
if(gpa>0.0){
System.out.println("Gpa: "+gpa);
}
else
System.out.println();
}
}