一:题目
1.员工类Employee:
(1)私有成员变量:姓名,年龄,工资
(2)提供无参,有参构造
(3)成员方法:work()方法——员工工作
2.程序员类Coder:
(1)继承Employee父类
(2)提供无参,有参构造
(3)成员方法:重写work()方法——姓名为张三,年龄为22,工资为15000的程序员正在编写代码
(4)自己独有的方法——发疯
3.测试类Test
二:提示
1.super://调用父类的构造方法
2.重写:子类根据需要实现父类的方法
三:代码
Employee.java
public class Employee {
private String name;
private int age;
private double salary;
protected Employee(){}
protected Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
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 double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public void work(){
System.out.println("员工工作");
}
}
Coder.java
public class Coder extends Employee {
public Coder(){
}
public Coder(String name,int age,double salary){
super(name, age, salary);//调用父类的构造方法
}
//重写work方法
@Override
public void work() {
System.out.println(String.format("姓名为%s,年龄为%d,工资为%f的员工正在编写代码",
getName(),getAge(),getSalary()));
}
public void crazy(){
System.out.println(String.format("%s已经疯了",getName()));
}
}
Test.java
public class Test {
public static void main(String[] args) {
Employee c = new Coder("小李",25, 7500);//向上转型
work(c);
special(c);
}
public static void work(Employee e){
e.work();//运行时多态
}
public static void special(Employee e){
if(e instanceof Coder){
Coder coder=(Coder)e;//向下转型
coder.crazy();
}
}
}