(1)定义一个抽象类Person,在Person类中声明两个属性:name和age,并设置其对应的getter方法,用于获取人的姓名和年龄;在Person类中声明一个有参构造方法,用于对Person类中的属性进行初始化;在Person类中声明一个say0方法和一个getContent0方法,在say0方法中调用getContent0方法。 (2)定义类Studet,并继承 Peson类。在Studnt类中声明一个属性score;声明 Student类的构造方法并重写Person类的getContent0方法。 (3)定义类Worker,并继承Person类。在Worker类中声明一个属性salary;声明 Worker类的构造方法并重写Person类的getContent0方法。 (6)在mainO·方法中使用父类引用指向子类对象的方式(向上转型),分别使用Person类和Warker类实例化两个Person对象perl和per2,并分别使用perl和per2调用sav0方法。
时间: 2024-02-11 20:03:44 浏览: 191
Java提升学习(二):构造方法,类的继承,封装
好的,我理解了你的问题。下面是你所描述的代码:
```java
// (1)定义一个抽象类Person,在Person类中声明两个属性:name和age,并设置其对应的getter方法,用于获取人的姓名和年龄;
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;
}
// 在Person类中声明一个say0方法和一个getContent0方法,在say0方法中调用getContent0方法。
public void say0() {
System.out.println(getContent0());
}
public abstract String getContent0();
}
// (2)定义类Student,并继承Person类。在Student类中声明一个属性score;
class Student extends Person {
private int score;
public Student(String name, int age, int score) {
super(name, age);
this.score = score;
}
// 声明Student类的构造方法并重写Person类的getContent0方法。
@Override
public String getContent0() {
return "我是学生,今年" + getAge() + "岁,名字叫" + getName() + ",我的成绩是" + score + "分";
}
}
// (3)定义类Worker,并继承Person类。在Worker类中声明一个属性salary;
class Worker extends Person {
private double salary;
public Worker(String name, int age, double salary) {
super(name, age);
this.salary = salary;
}
// 声明Worker类的构造方法并重写Person类的getContent0方法。
@Override
public String getContent0() {
return "我是工人,今年" + getAge() + "岁,名字叫" + getName() + ",我的工资是" + salary + "元";
}
}
// (6)在main方法中使用父类引用指向子类对象的方式(向上转型),分别使用Person类和Worker类实例化两个Person对象per1和per2,并分别使用per1和per2调用say0方法。
public class Main {
public static void main(String[] args) {
Person per1 = new Student("小明", 18, 90);
Person per2 = new Worker("张三", 30, 5000);
per1.say0();
per2.say0();
}
}
```
希望这个代码能够解决你的问题。如果你有任何其他问题,可以继续问我。
阅读全文