JAVA员工薪资(接口)

限于喜欢 提交于 2020-01-16 09:10:56

Java中的类不支持多重继承,即一个类只能有一个超类。接口作为一种程序结构,很好地解决了这一问题,实现多重继承的功能。

 package JAVA_Project_01_05;

//Java中的类不支持多重继承,即一个类只能有一个超类。接口作为一种程序结构,很好地解决了这一问题,实现多重继承的功能。

/*· 定义一个接口通过使用关键字interface实现。接口的定义格式:interface接口名{接口中的变量和方法}。

· 接口中的方法都是公开的抽象方法,并且不需要提供public和abstract关键字。接口没有构造方法。

· 一个类通过使用关键字implements声明自己使用一个或多个接口。若一个类实现多个接口,接口名之间用逗号分隔。实现接口的类必须实现接口中的所有方法。要在类中实现接口的方法,方法的名字、返回类型、参数个数及类型必须和接口中的完全一致。

· 接口可以继承多个接口,但不可以继承类,不存在这种关系。
*/


class Employee {//员工类

    private String name;//员工名称

    private String gender;//员工性别

    private int age;//员工年龄

    private int salary;//员工薪资

    public Employee(String name, String gender, int age, int salary) {

        super();

        this.name = name;

        this.gender = gender;

        this.age = age;

        this.salary = salary;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public String getGender() {

        return gender;

    }

    public void setGender(String gender) {

        this.gender = gender;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getSalary() {

        return salary;

    }

    public void setSalary(int salary) {

        this.salary = salary;

    }

}

interface PersonForm {//定义输出二维表的接口

    public int getFormCol();//获得表格的列数

    public int getFormRow();//获得表格的行数

    public String getValue(int row, int col);//获得指定的某行某列的值

    public String getColName(int col);//获得指定的列名

}

class FormA implements PersonForm {//定义一个类实现接口

    String[][] data;//定义一个二维数组

    public FormA(String[][] data) {//带参数的构造方法

        this.data = data;

    }

    public String getColName(int col) {//获得指定的列名

        return data[0][col];

    }

    public int getFormCol() {//获得表格的列数

        return data[0].length;

    }

    public int getFormRow() {//获得表格的行数

        return data.length - 1;

    }

    public String getValue(int row,int col) {//获得指定的某行某列的值

        return data[row + 1][col];

    }

}

class FormB implements PersonForm {//定义一个类实现接口

    private Employee[] data;

    public FormB(Employee[] data) {//带参数的构造方法

        this.data = data;

    }

    public String getColName(int col) {

        switch (col) {

            case 0:

                return "姓名\t|";

            case 1:

                return "性别\t|";

            case 2:

                return "年龄\t|";

            case 3:

                return "工资\t|";

            default:

                return null;

        }

    }

    public int getFormCol() {

        return 4;

    }

    public int getFormRow() {

        return data.length;

    }

    public String getValue(int row, int col) {

        switch (col) {

            case 0:

                return data[row].getName();

            case 1:

                return data[row].getGender();

            case 2:

                return data[row].getAge() + "";

            case 3:

                return data[row].getSalary() + "";

            default:

                return null;

        }

    }

}

class Table {//表格类

    private PersonForm form;

    public Table(PersonForm form) {//带参数的构造方法

        this.form = form;

    }

    public void display() {//显示格式和取值

        for (int i = 0; i<form.getFormCol();
        i++){//循环显示列名

            System.out.print(form.getColName(i));

        }

        System.out.println();

        System.out.println("---------------------------------");

        for (int i = 0; i<form.getFormRow();i++){//循环显示行信息

            for (int j = 0; j<form.getFormCol(); j++){//循环显示列信息

                System.out.print(form.getValue(i, j) + "\t|");

            }

            System.out.println();

        }

    }

}

public class TextInterface {//操作接口的类

    public static void main(String[] args) {//Java程序主入口处

        String[][] str = new String[][]{//创建二维数组存储数据

            {
                "name\t|", "gender\t|", "age\t|", "salary\t|"
            },

            {
                "Tom", "male", "20", "2000"
            },

            {
                "Lingda", "female", "21", "2100"
            },

            {
                "Susan", "female", "22", "2200"
            },

            {
                "Ansen", "female", "24", "2500"
            }
        } ;

        PersonForm form = new FormA(str);//接口变量引用类对象

        Table table1 = new Table(form);//创建表格实例

        table1.display();//显示员工薪资信息

        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");

        Employee em1 = new Employee("汤姆", "男", 20, 2000);//创建员工对象用一维数组存储

        Employee em2 = new Employee("玲达", "女", 21, 2100);

        Employee em3 = new Employee("苏萨", "女", 22, 2200);

        Employee em4 = new Employee("爱瑞卡", "男", 23, 2300);

        Employee em5 = new Employee("安臣", "女", 24, 2500);

        Employee[] data = {em1, em2, em3, em4, em5};//创建员工数组

        PersonForm form1 = new FormB(data);//接口变量引用类对象

        Table table2 = new Table(form1);//创建表格实例

        table2.display();//显示员工薪资信息

    }

}

/*
(1)程序中定义一个员工类、一个查看员工薪资的接口和两个实现接口的类。在main()主方法中首先创建二维数组并将数据信息填入数组,
定义接口的引用使用了多态。接口的引用必须是实现了接口的类的对象,所以使用类FormA创建form对象,再根据form来创建Table表格的对象table1,
调用display()方法输出数据。

(2)再创建5个Employee对象,用数组存储。接口引用同样使用多态,方式与创建form对象一样。
 */
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!