美文网首页
继承分析--综合案例

继承分析--综合案例

作者: 曾梦想仗剑天涯 | 来源:发表于2020-10-28 16:27 被阅读0次

    学生类

    • 建立一个人类(Person)和学生类(Student),功能要求如下:
      • Person类中包含4个私有型的数据成员name、addr、sex、age,分别为字符串型、字符串型、字符型、整型,表示姓名姓名、地址、性别、年龄。一个4参构造方法、一个2参构造方法、一个无参构造方法,一个输出方法显示4种属性
      • Student类继承Person类,并增加成员math、english存放数学和英语成绩,一个6参构造方法、一个2参构造方法、一个无参构造方法和覆写输出方法用于显示6种属性
    class Person {
      private String name;
      private String addr;
      private char sex;
      private int age;
      public Person() {}
      public Person(String name, String addr) {
        this(name, addr, '男', 0);
      }
      public Person(String name, String addr, char sex, int age) {
        this.name = name;
        this.addr = addr;
        this.sex = sex;
        this.age = age;
      }
      public String getInfo() {
        return "姓名:" + this.name + "、地址:" + this.addr + "、性别:" + this.sex + "、年龄:" + this.age;
      }
      public void setName(String name) {
        this.name = name;
      }
      public void setAddr(String addr) {
        this.addr = addr;
      }
      public void setSex(char sex) {
        this.sex = sex;
      }
      public void setAge(int age) {
        this.age = age;
      }
    public String getName() {
        return this.name;
      }
      public String getAddr() {
        return this.addr;
      }
      public char getSex() {
        return this.sex;
      }
      public int getAge() {
        return this.age;
      }
    }
    class Student extends Person {
      private double math;
      private double english;
      public Student() {}
      public Student(String name, String addr) {
        super(name, addr);
      }
      public Student(String name, String addr, char sex, int age, double math, double english) {
        super(name, addr, sex, age);
        this.math = math;
        this.english = english;
      }
      public String getInfo() {
        return super.getInfo() + "、数学成绩:" + this.math + "、英语成绩:" + this.english;
      }
      public void setMath(double math) {
        this.math = math;
      }
      public void setEnglish(double english) {
        this.english = english;
      }
      public double getMath() {
        return this.math;
      }
      public double getEnglish() {
        return this.english;
      }
    }
    public class JavaDemo {
      public static void main(String args []) {
        Student stu = new Student("张三", "天安门", '男', 12, 78.99, 89.98);
        System.out.println(stu.getInfo());
      }
    }
    

    管理人员与职员

    • 定义员工类,具备姓名、年龄、性别属性,并具有构造方法和显示数据方法,定义管理层类继承员工类,并且拥有自己的属性职务和年薪,定义职员类继承员工类,并有自己的属性所属部门和月薪
    class Employee {
      private String name;
      private int age;
      private String sex;
      public Employee() {}
      public Employee(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
      }
      public String getInfo() {
        return "姓名:" + this.name + "、年龄:" + this.age + "、性别:" + this.sex;
      }
      public void setName(String name) {
        this.name = name;
      }
      public void setAge(int age) {
        this.age = age;
      }
      public void setSex(String sex) {
        this.sex = sex;
      }
      public String getName() {
        return this.name;
      }
      public int getAge() {
        return this.age;
      }
      public String getSex() {
        return this.sex;
      }
    }
    class Manager extends Employee {
      private String job;
      private double income;
      public Manager() {}
      public Manager(String name, int age, String sex, String job, double income) {
        super(name, age, sex);
        this.job = job;
        this.income = income;
      }
      public String getInfo() {
        return "【管理层】" + super.getInfo() + "、职位:" + this.job + "、年薪:" + this.income;
      }
      public void setJob(String job) {
        this.job = job;
      }
      public void setIncome(double income) {
        this.income = income;
      }
      public String getJob() {
        return this.job;
      }
      public double getIncome() {
        return this.income;
      }
    }
    class Staff extends Employee {
      private String dept;
      private double salary;
      public Staff() {}
      public Staff(String name, int age, String sex, String dept, double salary) {
        super(name, age, sex);
        this.dept = dept;
        this.salary = salary;
      }
      public String getInfo() {
        return "【职员】" + super.getInfo() + "、部门:" + this.dept + "、月薪:" + this.salary;
      }
      public void setDept(String dept) {
        this.dept = dept;
      }
      public void setSalary(double salary) {
        this.salary = salary;
      }
      public String getDept() {
        return this.dept;
      }
      public double getSalary() {
        return this.salary;
      }
    }
    public class JavaDemo {
      public static void main(String args []) {
        Manager man = new Manager("张三", 38, "女", "主管", 150000.00);
        Staff staff = new Staff("李四", 18, "男", "出纳", 3000.00);
        System.out.println(man.getInfo());
        System.out.println(staff.getInfo());
      }
    }
    

    字符串统计

    • 编写程序,统计出字符串"want you to know one thing"字母n和字母o的出现次数
    //只是一个顺序的思维模式
    class StringUtil {
      public static int [] count(String str) {
        int countData [] = new int [2];
        char [] data = str.toCharArray();
        for(int x = 0; x < data.length; x++) {
          if(data[x] == 'n' || data[x] == 'N') {
            countData[0]++;
          }
          if(data[x] == 'o' || data[x] == 'O') {
            countData[1]++;
          }
        }
        return countData;
      }
    }
    public class JavaDemo {
      public static void main(String args []) {
        String str = "want you to know one thing";
        int result [] = StringUtil.count(str);
        System.out.println("字母n的个数:" + result[0]);
        System.out.println("字母o的个数:" + result[1]);
      }
    }
    
    //继承模式
    class StringUtil {
      private String content;
      public StringUtil() {}
      public StringUtil(String content) {
        this.content = content;
      }
      public String getInfo() {
        return this.getContent();
      }
      public void setContent(String content) {
        this.content = content;
      }
      public String getContent() {
        return this.content;
      }
    }
    class Stringcount extends StringUtil{
      private int nCount;
      private int oCount;
      public Stringcount() {}
      public Stringcount(String content) {
        super(content);
        this.countChar();
      }
      public void countChar() {
        char [] data = super.getContent().toCharArray();
        for(int x = 0; x < data.length; x++) {
          if(data[x] == 'n' || data[x] == 'N') {
            this.nCount++;
          }
          if(data[x] == 'o' || data[x] == 'O') {
            this.oCount++;
          }
        }
      }
      public String getInfo() {
        return "n的个数:" + this.nCount + "、o的个数:" + this.oCount;
      }
      public void setNCount(int nCount) {
        this.nCount = nCount;
      } 
      public void setOCount(int oCount) {
        this.oCount = oCount;
      }
      public int getNCount() {
        return this.nCount;
      }
      public int getOCount() {
        return this.oCount;
      }
    }
    public class JavaDemo {
      public static void main(String args []) {
        Stringcount sc = new Stringcount("want you to know one thing");
        System.out.println(sc.getInfo());
      }
    }
    

    数组操作

    建立一个可以实现整型数组的操作类(Array),而后在里面可以操作的数组大小由外部决定,而后在Array类里面需要提供有数组的如下处理:进行数据的增加(如果数据满了则无法增加)、可以实现数组容量的扩充、取得数组的全部内容。
    完成之后在此基础上再派生出两个子类:

    • 数组排序类:返回的数据必须是排序后的结果
    • 数组反转类:可以实现内容的首尾互换
    class Array {
      private int [] data;
      private int foot;
      public Array() {}
      public Array(int length) {
        if(length > 0) {
          this.data = new int [length];
        } else {
          this.data = new int [1];
        }
      }
      public void increment(int num) {
        int [] newData = new int [this.data.length + num];
        System.arraycopy(this.data, 0, newData, 0, this.data.length);
        this.data = newData;
      }
      public boolean add(int num) {
        if(this.foot < this.data.length) {
          this.data[this.foot++] = num;
          return true;
        }
        return false;
      }
      public int [] getData() {
        return this.data;
      }
    }
    class SortArray extends Array {
      public SortArray() {}
      public SortArray(int length) {
        super(length);
      }
      public int [] getData() {
        java.util.Arrays.sort(super.getData());
        return super.getData();
      }
    }
    class ReverseArray extends Array {
      public ReverseArray() {}
      public ReverseArray(int length) {
        super(length);
      }
      public int [] getData() {
        int center = super.getData().length / 2;
        int head = 0;
        int tail = super.getData().length - 1;
        for(int x = 0; x < center; x++) {
          int temp = super.getData() [head];
          super.getData() [head] = super.getData() [tail];
          super.getData() [tail] = temp;
          head++;
          tail--;
        }
        return super.getData();
      }
    }
    public class JavaDemo {
      public static void main(String args []) {
        Array arr1 = new Array(5);
        SortArray arr2 = new SortArray(5);
        ReverseArray arr3 = new ReverseArray(5);
        System.out.println(arr2.add(11));
        System.out.println(arr2.add(2));
        System.out.println(arr2.add(32));
        System.out.println(arr2.add(24));
        System.out.println(arr2.add(15));
        arr2.increment(3);
        System.out.println(arr2.add(26));
        System.out.println(arr2.add(1));
        System.out.println(arr2.add(7));
        int [] result = arr2.getData();
        for(int x = 0; x < result.length; x++) {
          System.out.print(result[x] + "、");
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:继承分析--综合案例

          本文链接:https://www.haomeiwen.com/subject/erhcvktx.html