在班级中上课时,老师在讲台上讲课,偶有提问,会点名学生回答问题。虽然老师和学生都在讲话,但讲话的具体内容却不相同。本案例要求使用抽象类的知识编写一个程序实现老师上课的情景。
(1)定义一个抽象类Person,在Person类中声明两个属性:name和age,并设置其对应的getter方法,用于获取人的姓名和年龄;在Person类中声明一个有参构造方法,用于对Person类中的属性进行初始化;在Person类中声明一个say()方法和一个getContent()方法,在say()方法中调用getContent()方法。
(2)定义类 Student,并继承Person类。在Student类中声明一个属性score;声明Student类的构造方法并重写Person类的getContent()方法。
(3)定义类 Worker,并继承Person类。在Worker类中声明一个属性salary;声明Worker类的构造方法并重写Person类的getContent()方法。
(6)在main() 方法中使用父类引用指向子类对象的方式(向上转型),分别使用Person类和Worker类实例化两个Person对象per1和per2,并分别使用per1和per2调用say()方法。
public class Test {
public static void main(String[] args) {
Person person = new Student("zs", 18, 100);
Person person1 = new Worker("ww", 18, 3000);
person.say();
person1.say();
}
}
abstract class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void say() {
getContent();
}
abstract void getContent();
}
class Student extends Person {
private int score;
public Student(String name, int age, int score) {
super(name, age);
this.score = score;
}
@Override
void getContent() {
System.out.println("i am is " + super.getName() + "i score is " + score);
}
}
class Worker extends Person {
private int salary;
public Worker(String name, int age, int salary) {
super(name, age);
this.salary = salary;
}
@Override
void getContent() {
System.out.println("i am is " + super.getName() + "i salary is " + salary);
}
}
帮助到您的话,希望给个采纳。
博主在1024那天参加活动,发布了一个blog,可以来访问一下,感激不尽。
这不是很简单吗。主要运用了Java面向对象的三大特性的知识点(继承),自己写一下,出现错误不会截图提问
都写那么明确了,自己动下手,出错在问。
自己画一张图扁可理解