要求如下
(1)Student类有name和age两个属性,一个包含两个参数的构造方法,用于给name和age赋值,一个show()方法打印Student的属性信息。
(2)本科生类Undergraduate增加一个degree(学位)属性。有一个包含三个参数的构造方法,前两个参数用于给继承的name和age赋值,第三个参数给degree赋值,一个show() 方法用于打印Udergraduate的属性信息。
(3)在测试类中分别创建Student对象和Udergraduate对象,调用它们的show()方法。
注意:每个类都完全封装,不允许有非私有化的属性。
填写答案
class Student
{
private String name;
private int age;
//构造一个包含两个参数的构造方法
public Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
//一个show()方法打印Student的属性信息。
/* 1.错误: 不兼容的类型: 意外的返回值
return "姓名:"+this.getName()+",年龄:"+this.getAge();
void show(){
return "姓名:"+this.getName()+",年龄:"+this.getAge();
}
方法上定义是void,后面又返回,就不应该了
2.错误: 方法声明无效; 需要返回类型。。有void无return
public show(){
}
public show(){
return "姓名:"+this.getName()+",年龄:"+this.getAge();
}
*/
public String show(){
return "姓名:"+this.getName()+",年龄:"+this.getAge();
}//出现两次错误
}
class Undergraduate extends Student
{
private String degree;//子类中也要private
public String getDegree(){
return degree;
}
public void setDegree(String degree){
this.degree=degree;
}
//有一个包含三个参数的构造方法,前两个参数用于给继承的name和age赋值,
//第三个参数给degree赋值,一个show() 方法用于打印Udergraduate的属性信息。
/*错误: “无效的方法声明;需要返回类型”
原因:因为构造函数与其类具有不同的名称。
Undergraduate少打了一个n
*/
public Undergraduate(String name,int age,String degree){
super(name,age);//继承父类
//this.setDegree(degree);也可以这样写
this.degree=degree;
}
public String show(){
return super.show()+",学位:"+this.getDegree();
}
}
public class Test1{
public static void main(String[] args){
Undergraduate u=new Undergraduate("张三",19,"本科");
System.out.println(u.show());
}
}