实验三 Java类的继承与派生

打印 上一主题 下一主题

主题 915|帖子 915|积分 2745

第1关 类的继承
  1. package step1;
  2. import java.util.Scanner;
  3. class Person {
  4.     /********** Begin **********/
  5.     // 自行设计类的实现
  6.     //姓名
  7.     private String name;
  8.     //性别
  9.     private String sex;
  10.     //年龄
  11.     private int age;
  12.     //构造方法
  13.     public Person(String name, String sex, int age){
  14.         this.name = name;
  15.         this.sex = sex;
  16.         this.age = age;
  17.     }
  18.     //重写toString()方法
  19.     public String toString(){
  20.         return name + "," + sex + "," + age;
  21.     }
  22.         /********** End **********/                                                             
  23. }
  24. class Student extends Person {
  25.     /********** Begin **********/
  26.     // 自行设计类的实现
  27.     //学号
  28.     private String no;
  29.     //入学时间
  30.     private String enter;
  31.     //专业
  32.     private String major;
  33.     //构造方法
  34.     public Student(String name, String sex, int age, String no, String enter, String major){
  35.         super(name, sex, age);
  36.         this.no = no;
  37.         this.enter = enter;
  38.         this.major = major;
  39.     }
  40.     //重写toString()方法
  41.     public String toString(){
  42.         return super.toString() + "," + no + "," + enter + "," + major;
  43.     }
  44.         /********** End **********/                                                             
  45. }
  46. class Teacher extends Person {
  47.     /********** Begin **********/
  48.     // 自行设计类的实现
  49.     //职称
  50.     private String pro;
  51.     //部门
  52.     private String department;
  53.     //构造方法
  54.     public Teacher(String name, String sex, int age, String pro, String department){
  55.         super(name, sex, age);
  56.         this.pro = pro;
  57.         this.department = department;
  58.     }
  59.     //重写toString()方法
  60.     public String toString(){
  61.         return super.toString() + "," + pro + "," + department;
  62.     }
  63.         /********** End **********/                                                                     
  64. }
  65. public class Lab3_1 {
  66.         public static void main(String[] args) {
  67.         Scanner sc = new Scanner(System.in);
  68.                 Student student = new Student(sc.next(), sc.next(), sc.nextInt(), sc.next(), sc.next(), sc.next());
  69.                 Teacher teacher = new Teacher(sc.next(), sc.next(), sc.nextInt(), sc.next(), sc.next());
  70.                 System.out.println("学生基本信息为:" + student);
  71.                 System.out.println("教师的信息为:" + teacher);
  72.                 sc.close();                                                             
  73.         }
  74. }       
复制代码
第2关 上转型对象的使用,多态的特性
  1. package step2;
  2. abstract class Employee {
  3.         public abstract double earnings();
  4. }
  5. class YearWorker extends Employee {
  6.         //重写earnings()方法
  7.     /********** Begin **********/
  8.     public double earnings() {
  9.         return 100000;
  10.     }
  11.         /********** End **********/                                                                      
  12. }
  13. class MonthWorker extends Employee {
  14.         //重写earnings()方法
  15.     /********** Begin **********/
  16.     public double earnings() {
  17.         return 10000 * 12;
  18.     }
  19.         /********** End **********/                                                                      
  20. }
  21. class WeekWorker extends Employee {
  22.         //重写earnings()方法
  23.     /********** Begin **********/
  24.     public double earnings() {
  25.         return 5000 * 4 * 12;
  26.     }
  27.         /********** End **********/                                                                       
  28. }
  29. class Company {
  30.         Employee[] employees;
  31.         double salaries = 0;
  32.         Company(Employee[] employees) {
  33.                 this.employees = employees;
  34.         }
  35.         public double salariesPay() {
  36.                 salaries = 0;
  37.                 //计算salaries
  38.                 /********** Begin **********/
  39.         for (Employee employee : employees) {
  40.             salaries += employee.earnings();
  41.             }
  42.             /********** End **********/                                                    
  43.                 return salaries;
  44.         }       
  45. }
  46. public class HardWork {
  47.         public static void main(String[] args) {
  48.                 Employee[] employees = new Employee[20];
  49.                 for (int i = 0; i < employees.length; i++) {
  50.                         if(i%3==0)
  51.                                 employees[i] = new WeekWorker();
  52.                         else if(i%3==1)
  53.                                 employees[i] = new MonthWorker();
  54.                         else if(i%3==2)
  55.                                 employees[i] = new YearWorker();
  56.                 }
  57.                 Company company = new Company(employees);
  58.                 System.out.println("公司年工资总额:" + company.salariesPay());
  59.         }
  60. }
复制代码
第3关 接口的使用
  1. package step3;
  2. // 自行设计接口和实现类
  3. /********** Begin **********/
  4. // 定义接口
  5. interface Display {
  6.     public void display();
  7. }
  8. // 通知类
  9. class Inform implements Display {
  10.     // 实现 display() 方法
  11.     public void display() {
  12.         System.out.println("通知内容");
  13.     }
  14. }
  15. // 汽车类
  16. class Car implements Display {
  17.     // 实现 display() 方法
  18.     public void display() {
  19.         System.out.println("汽车油量");
  20.     }
  21. }
  22. // 广告类
  23. class Adervise implements Display {
  24.     // 实现 display() 方法
  25.     public void display() {
  26.         System.out.println("广告消息");
  27.     }
  28. }
  29. /********** End **********/                                                             
  30. public class Lab3_3 {
  31.         public static void main(String[] args) {
  32.                 Display[] arr = { new Inform(), new Car(), new Adervise() };
  33.                 for (Display d : arr) {
  34.                         d.display();
  35.                 }
  36.         }
  37. }
复制代码
第4关 综合应用

Student
  1. package step4;
  2. public class Student {
  3.     /********** Begin **********/
  4.     private String sno;  // 学号
  5.     private String sname;  // 姓名
  6.     private String sdept;  // 系别
  7.     public String getSno() {
  8.         return sno;
  9.     }
  10.     public void setSno(String sno) {
  11.         this.sno = sno;
  12.     }
  13.     public String getSname() {
  14.         return sname;
  15.     }
  16.     public void setSname(String sname) {
  17.         this.sname = sname;
  18.     }
  19.     public String getSdept() {
  20.         return sdept;
  21.     }
  22.     public void setSdept(String sdept) {
  23.         this.sdept = sdept;
  24.     }
  25.     @Override
  26.     public String toString() {
  27.         return "学号: " + sno + "        姓名: " + sname + "        系部: " + sdept;
  28.     }
  29.     /********** End **********/
  30. }
复制代码
IStudentDAO
  1. package step4;
  2. public interface IStudentDAO {
  3.         /********** Begin **********/
  4.     void insertStudent(Student student);  // 插入学生信息
  5.     void updateStudent(Student student);  // 更新学生信息
  6.     void deleteStudent(String sno);  // 删除学生信息
  7.     Student findStudentBySno(String sno);  // 根据学号查找学生信息
  8.     void displayAllStudent();  // 显示所有学生信息
  9.     /********** End **********/
  10. }
复制代码
StudentDAOImpl
  1. package step4;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class StudentDAOImpl implements IStudentDAO {
  5.         static List<Student> students = new ArrayList<Student>();
  6.        
  7.         /********** Begin **********/
  8.     //自行实现所有其它方法
  9.     @Override
  10.     public void insertStudent(Student student) {
  11.         students.add(student);
  12.     }
  13.     @Override
  14.     public void updateStudent(Student student) {
  15.         for (Student stu : students) {
  16.             if (stu.getSno().equals(student.getSno())) {
  17.                 stu.setSname(student.getSname());
  18.                 stu.setSdept(student.getSdept());
  19.                 break;
  20.             }
  21.         }
  22.     }
  23.     @Override
  24.     public void deleteStudent(String sno) {
  25.         for (Student stu : students) {
  26.             if (stu.getSno().equals(sno)) {
  27.                 students.remove(stu);
  28.                 break;
  29.             }
  30.         }
  31.     }
  32.     @Override
  33.     public Student findStudentBySno(String sno) {
  34.         for (Student stu : students) {
  35.             if (stu.getSno().equals(sno)) {
  36.                 return stu;
  37.             }
  38.         }
  39.         return null;
  40.     }
  41.     /********** End **********/
  42.     /**
  43.     * 显示所有学生信息记录参考代码
  44.     */
  45.     @Override
  46.     public void displayAllStudent() {
  47.         if (students.size() > 0) {
  48.             for (Student stu : students) {
  49.                 System.out.println(stu);
  50.             }
  51.         }else {
  52.             System.out.println("数据库中无学生记录!");
  53.         }
  54.     }
  55. }
复制代码
MainClass
  1. package step4;
  2. import java.util.Scanner;
  3. public class MainClass {
  4.         public static void main(String[] args) {
  5.                 Scanner scanner = new Scanner(System.in);
  6.                 StudentDAOImpl studentDAOImpl = new StudentDAOImpl();
  7.                 //1. 插入学生信息
  8.                 Student stu = new Student();
  9.                 stu.setSno(scanner.next());
  10.                 stu.setSname(scanner.next());
  11.                 stu.setSdept(scanner.next());
  12.                 studentDAOImpl.insertStudent(stu);
  13.                 //2. 显示插入学生信息
  14.                 System.out.println("1. 插入学生信息如下:");
  15.                 studentDAOImpl.displayAllStudent();
  16.                 //3. 更新学生信息
  17.                 stu.setSname("李四");
  18.                 stu.setSdept("计算机系");
  19.                 studentDAOImpl.updateStudent(stu);
  20.                 System.out.println("2. 更新后学生信息如下:");
  21.                 System.out.println(studentDAOImpl.findStudentBySno(stu.getSno()));
  22.                 //4. 删除指定学生信息
  23.                 System.out.println("3. 删除当前学号学生信息:" + stu.getSno());
  24.                 studentDAOImpl.deleteStudent(stu.getSno());
  25.                 System.out.println("学生信息已删除!");
  26.                 //2. 显示插入学生信息
  27.                 System.out.println("5. 显示所有学生信息:");
  28.                 studentDAOImpl.displayAllStudent();
  29.                 scanner.close();
  30.         }
  31. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表