Java案例分析

【案例4-4】学生和老师

2024-10-25 13 0

简介 1.案例描述 在班级中上课时,老师在讲台上讲课,偶有提问,会点名学生回答问题。虽然老师和学生都在讲话,但讲话的具体内容却不相同。本案例要求使用抽象类的知识编写一个程序实现老师上课的情景。

【案例4-4】学生和老师

【案例介绍】

1.案例描述

在班级中上课时,老师在讲台上讲课,偶有提问,会点名学生回答问题。虽然老师和学生都在讲话,但讲话的具体内容却不相同。本案例要求使用抽象类的知识编写一个程序实现老师上课的情景。

2.运行结果upfile

运行结果

【案例目标】

l  学会“学生和老师”的实现思路。

l  独立完成“学生和老师”的源代码编写、编译及运行。

l  掌握方法的重写。

l  掌握抽象类的应用。

【案例分析】

1)定义一个抽象类Person,在Person类中声明两个属性:nameage,并设置其对应的getter方法,用于获取人的姓名和年龄;在Person类中声明一个有参构造方法,用于对Person类中的属性进行初始化;在Person类中声明一个say()方法。

2)定义类 Student,并继承Person类。声明Student类的构造方法并重写Person类的say()方法。

3)定义类 Teacher,并继承Person类。声明Teacher类的构造方法并重写Person类的say()方法。

4)定义测试类,在测试类中分别使用向上转型的方式实例化两个Person对象per1per2,并分别使用per1per2调用say()方法。

 

【案例实现】

AbstractDemo.java

1     abstract class Person {

2         private String name;

3         private int age;

4         public Person(String name, int age) {

5             this.name = name;

6             this.age = age;

7         }

8         public String getName() {

9             return name;

10       }

11       public int getAge() {

12           return age;

13       }

14       public abstract void say();

15   }

16   class Student extends Person{

17       public Student(String name, int age) {

18           super(name, age);

19       }

20       public void say() {

21           System.out.println("学生姓名:"+this.getName()+",年龄:

22         "+this.getAge()+",负责回答问题。");

23       }

24   }

25   class Teacher extends Person{

26       public Teacher(String name, int age) {

27           super(name, age);

28       }

29       public void say() {

30           System.out.println("老师姓名:"+this.getName()+",年龄:

31         "+this.getAge()+",负责提出问题。");

32       }

33   }

34   public class AbstractDemo{

35       public static void main(String[] args){

36           Person per1 = new Student("张三",18);

37           Person per2 = new Teacher("李四",30);

38           per1.say();

39           per2.say();

40       }

41   }

上述代码中,第1~15行代码定义了一个抽象类Person,在Person类中声明了nameage属性和其对应的getter方法和构造方法,并声明了say()方法;第16~24行代码定义了一个Student类并继承Person类,在Student类中声明了Student类的构造方法并重写Person类的say()方法;25~33行代码定义了一个Teacher类并继承Person类,在Teacher类中声明了Teacher类的构造方法并重写Person类的say()方法;第34~41行代码分别使用向上转型的方式实例化了两个Person对象per1per2,并分别使用per1per2调用say()方法。


点赞 0

文章评论

欢迎您:

阿文博客

人生的价值,并不是用时间,而是用深度量去衡量的。——列夫·托尔斯泰

69 文章 1879 浏览 0 评论