java 中的类继承

【题目描述】:

a .声明一个Person类,有name(String类型)、age(int类型)、sex(char类型)属性。

      通过构造方法进行赋值。各属性具有getter/setter方法。

      一个show方法,返回String类型,内容如下:

         某某 男(女) 年龄

b. 声明一个Student类,继承Person类,增加id(int,学号)属性,通过构造方法,利用super调用父类构造方法来进行变量赋值。各属性具有getter/setter方法。Override父类的show方法,返回String类型,内容如下:

         某某 男(女) 年龄 学号

提示:利用super调用父类的show方法得到除学号部分的String,然后加上学号的信息。

c. 声明一个Teacher类,继承Person,增加course(String,所教课程)属性,通过构造方法,利用super调用父类构造方法来进行变量赋值。各属性具有getter/setter方法。Override父类的show方法,返回String类型,内容如下:

      某某 男(女)年龄 所教课程

提示:利用super调用父类的show方法得到除所教课程部分的String,然后加上所教课程的信息。

d .声明PersonApp类,写一个静态方法appMain方法,在方法中分别声明Person、Student、Teacher类型的变量,并通过构造方法初始化,然后显示各自的信息,信息如下【注意:下面的显示结果

Person后面的是一个英文冒号接半角空格,不是中文冒号;

Student后的面是一个英文冒号接半角空格,不是中文冒号;

Teacher后面的是一个英文冒号接半角空格,不是中文冒号】。运行结果如下(最前面的1是由用户输入的,用于对用户编写的appMain的测试,细节参见main方法):

【输出样例】:

【代码如下】:

import java.util.Scanner;
//声明一个PersonApp类
public class PersonApp{
	public static void appMain(String[] args) {
		Person p=new Person("张淼",21,'男');
		Student s=new Student("高坤",22,'男',5001212);
		Teacher t=new Teacher("李芳香",35,'女',"程序设计基础");
		System.out.println("Person: "+p.show());//显示各自信息
		System.out.println("Student: "+s.show());
		System.out.println("Teacher: "+t.show());
	}
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		int func = sc.nextInt();
		switch (func) {
		case 1:
			appMain(null);
			break;
		case 2:
			personTest();
			break;
		case 3:
			studentTest();
			break;
		case 4:
			teacherTest();
			break;
      
		default:
			break;
		}
	}
	private static void teacherTest() {
		Teacher t = new Teacher("李芳香", 35, '女', "程序设计基础");
		test(t.getName().equals("李芳香") && t.getAge()==35
				&& t.getSex()=='女' && t.getCourse().equals("程序设计基础"),
				"Teacher构造函数正确","Teacher构造函数不正确");
		test(t.show().equals("李芳香 女 35 程序设计基础"),"teacher.show()通过","teacher.show()未通过");
	}

	private static void studentTest() {
		Student s = new Student("高坤", 22, '男', 5001212);
		test(s.getName().equals("高坤") && s.getAge()==22
				&& s.getSex()=='男' && s.getId()==5001212,
				"Student构造函数正确","Student构造函数不正确");
		test(s.show().equals("高坤 男 22 5001212"),"student.show()通过","student.show()未通过");
	}

	private static void personTest() {
		Person p = new Person("张淼", 21, '男');
		test(p.getName().equals("张淼")  && p.getAge()==21
				&& p.getSex()=='男', "Person构造函数正确","Person构造函数不正确");
		test(p.show().equals("张淼 男 21"),"person.show()通过","person.show()未通过");   
	}

	private static void test(boolean pass, String corr, String wrong) {
		if  (pass) {
			System.out.println(corr);
		} else {
			System.out.println(wrong);
		}  
	}
}

//声明一个Person类
class Person{ //有name age sex属性
	String name;
	int age;
	char sex;
	//通过构造方法进行赋值
	Person(String name,int age,char sex){
		this.name=name;
		this.age=age;
		this.sex=sex;
	}
	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;
	}
	public char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex=sex;
	}
	//一个show方法,返回String类型
	public String show() {
		return this.getName()+" "+this.getSex()+" "+this.getAge();
	}
}
//声明一个Student类继承Person,增加id属性
class Student extends Person{
	private int id;
	//通过构造方法,利用super调用父类构造方法来进行变量赋值
	public Student(String name,int age,char sex,int id) {
		super(name,age,sex);
		this.id=id;
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public int getId() {
		return id;
	}
	public char getSex() {
		return sex;
	}
	//Override父类的show方法
	public String show() {
		return super.show()+" "+this.getId();
	}
}
//声明一个teacher类继承Person,增加course属性
class Teacher extends Person{
	String course;
	//通过构造方法,利用super调用父类构造方法来进行变量赋值
	public Teacher(String name,int age,char sex,String course) {
		super(name,age,sex);
		this.course=course;
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public char getSex() {
		return sex;
	}
	public Object getCourse() {
		return course;
	}
	//Override父类的show方法
	public String show() {
		return super.show()+" "+this.getCourse();
	}
}

猜你喜欢

转载自blog.csdn.net/ZQY211210400628/article/details/129779139