JAVA員工薪資(接口)

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對象一樣。
 */
發佈了71 篇原創文章 · 獲贊 12 · 訪問量 4539
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章