java 継承とインターフェースの使い方阶层が1つのポリモーフィズム

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 継承とインターフェースの使い方阶层が1つのポリモーフィズム相关的知识,希望对你有一定的参考价值。


public class 階層が1つのポリモーフィズム {
}

interface Employee {
	public String getName();

	public float getSalary();

	public float calcAnnualBouns();

	public int getDaysOffSick();
}

abstract class AbstractEmployee implements Employee {
	private String name_;
	private float salary_;
	private int sickdays_;

	public AbstractEmployee(String name_, float salary_, int sickdays_) {
		this.name_ = name_;
		this.salary_ = salary_;
		this.sickdays_ = sickdays_;
	}

	public String getName() {
		return name_;
	}

	public float getSalary() {
		return salary_;
	}

	public int getDaysOffSick() {
		return sickdays_;
	}
}

class FatCatEmployee extends AbstractEmployee {
	public FatCatEmployee(String name_, float salary_, int sickdays_) {
		super(name_, salary_, sickdays_);
	}

	@Override
	public float calcAnnualBouns() {
		float loadsOfMoney = 0F;
		System.out.println("FatCatEmployee.calcBouns");
		return loadsOfMoney;
	}
}

class LowPaidEmployee extends AbstractEmployee {
	public LowPaidEmployee(String name_, float salary_, int sickdays_) {
		super(name_, salary_, sickdays_);
	}

	@Override
	public float calcAnnualBouns() {
		System.out.println("LowPaidEmployee.calcBouns");
		return 0F;
	}

}

final class EmployeeOperations {
	Employee[] employees = { new FatCatEmployee("Boss", 500000, 20),
			new LowPaidEmployee("Tea Boy", 5000, 1) };

	/*
	 * calcCostOfEmployees()はIteratorをパラメータとして受け取るため、
	 * オブジェクトを格納するコレクションクラスの実際の型から独立して
	 * メソッドを実装することが可能になる。ArrayListでもHashtableでも構わない。
	 * また、Employeeの具体的な型を知っている必要はない。
	 * 素晴らしいのは、このメソッドは変更を受けないinterface定義に対してのみ作用しているので
	 * この先BlueCollarEmployeeというEmployeeの新たなクラスが導入されても変更を受けない。
	 */
	public static float calcCostOfEmployees(Iterator<Employee> employees) {
		float total_cost = 0F;
		while (employees.hasNext()) {
			Employee emp = (Employee) employees.next();
			total_cost += emp.calcAnnualBouns();
			total_cost += emp.getSalary();
		}
		return total_cost;
	}
}

以上是关于java 継承とインターフェースの使い方阶层が1つのポリモーフィズム的主要内容,如果未能解决你的问题,请参考以下文章

java ネストした型やインターフェースの例

javascript 公司的FireStoreオフラインデータの使い方

Apex スケジューラを使用したジョブのスケジュール

csharp IPickupインターフェースを持つコンポーネンををInjectする例

text GitHubのフォーク(fork)とプルリクエスト(拉动请求)の使い方

swift 适用于iOS的SearchViewController 11.启用大标题。谢谢:【Swift】UISearchControllerの使い方。検索结果用ビューコントローラーを呼び出す。はじは