/**
* 一、实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty和Staff。具体要求如下:
(1)Person类中的属性有:姓名name(String类型),地址address(String类型),电话号码telphone(String类型)和电子邮件地址email(String类型);
(2)Employee类中的属性有:办公室office(String类型),工资wage(double类型),受雇日期hiredate(String类型);
(3)Faculty类中的属性有:学位degree(String类型),级别level(String类型);
(4)Staff类中的属性有:职务称号duty(String类型)。
*/
1、Person类
1 public class Person {
2 private String name;
3 private String address;
4 private String telphone;
5 public String email;
6 static double incom(double salary,double sal){
7 return salary+sal;
8 }
9 public void tel(){
10 System.out.println("大父类");
11 }
12
13 public String getName() {
14 return name;
15 }
16
17 public void setName(String name) {
18 this.name = name;
19 }
20
21 public String getAddress() {
22 return address;
23 }
24
25 public void setAddress(String address) {
26 this.address = address;
27 }
28
29 public String getTelphone() {
30 return telphone;
31 }
32
33 public void setTelphone(String telphone) {
34 this.telphone = telphone;
35 }
36 }
2、Employee类
1 public class Employee extends Person { 2 private String office; 3 private double wage; 4 public String hiredate; 5 6 static double incom(double salary, double sal){ 7 return sal*salary; 8 } 9 10 @Override 11 public void tel() { 12 System.out.println("小父类"); 13 } 14 15 public String getOffice() { 16 return office; 17 } 18 19 public void setOffice(String office) { 20 this.office = office; 21 } 22 23 public double getWage() { 24 return wage; 25 } 26 27 public void setWage(double wage) { 28 this.wage = wage; 29 } 30 }
3、Faculty类
1 public class Faculty extends Employee { 2 private String degree; 3 public String level; 4 5 @Override 6 public void tel() { 7 System.out.println("子类1"); 8 } 9 10 public String getDegree() { 11 return degree; 12 } 13 14 public void setDegree(String degree) { 15 this.degree = degree; 16 } 17 }
4、Staff类
1 public class Staff extends Employee { 2 private String duty; 3 @Override 4 public void tel(){ 5 System.out.println("子类2"); 6 } 7 8 public String getDuty() { 9 return duty; 10 } 11 12 public void setDuty(String duty) { 13 this.duty = duty; 14 } 15 16 }
5、测试类
1 public class test4 { 2 public static void main(String[]args){ 3 Employee fa=new Employee(); 4 Person da=new Employee(); //父类的引用可以指向子类的对象 5 Person sa =new Person(); 6 Employee wa=new Faculty(); 7 //对象属性的引用只能指向该引用类和该类的父类属性 8 fa.email="父类属性值"; 9 fa.hiredate="子类属性值"; 10 da.email="3333"; 11 //da.hiredate="3333"; 无法引用子类的属性值 12 13 14 fa.tel(); //Employee的tel方法 15 da.tel(); //Employee的tel方法 16 sa.tel(); //Person的tel方法 17 wa.tel(); //Faculty的tel方法 18 19 //如果想引用private属性,需要通过封装get来获取 20 fa.setName("李刚"); 21 fa.setAddress("凯华"); 22 fa.setTelphone("13225452652"); 23 fa.hiredate="20190830"; //该属性是public修饰 24 fa.setOffice("经理室"); 25 fa.setWage(88888); 26 27 double A= fa.incom(5,10); //Employee类的方法 28 double B= da.incom(10,10); //Person类的方法 29 30 System.out.println(A); 31 System.out.println(B); 32 System.out.println(fa.getName()+fa.getTelphone()); 33 34 35 } 36 }
执行结果: