package demo.java.concept.abstraction.example3;
public class Agent extends Person implements Rent {
// 所有者はだれ
private Rent rent;
@Override
public void rent() {
// 1. お客さんを連れて、家を下見する
System.out.println(getName() + "1. お客さんを連れて、家を下見する");
// 2. 賃貸契約をする、手数料をもらう
System.out.println(getName() + "2. 賃貸契約をする、手数料をもらう");
// 3. 不動産の所有者に連絡し、不動産を顧客に貸し出す。
// 所有者の貸し出す行為を呼び出す。
rent.rent();
}
public Agent(Rent rent) {
super("[Agent zhang]");
this.rent = rent;
}
}
package demo.java.concept.abstraction.example3;
public class Client extends Person {
public static void main(String[] args) {
Owner owner = new Owner();
Agent agent = new Agent(owner);
Owner2 owner2 = new Owner2();
Agent agent2 = new Agent(owner2);
agent.rent();
}
public Client() {
super("[client li]");
}
}
package demo.java.concept.abstraction.example3;
public class Owner extends Person implements Rent {
@Override
public void rent() {
System.out.println(getName() + "私は所有者です。家を貸します。");
}
public Owner(){
super("[owner wang]");
}
}
package demo.java.concept.abstraction.example3;
public class Owner2 extends Person implements Rent {
@Override
public void rent() {
System.out.println(getName() + "今月に家を賃貸に出す。");
}
public Owner2() {
super("[Owner2 wu]");
}
}
package demo.java.concept.abstraction.example3;
public class Person {
private String name;
public String getName() {
return name;
}
public Person(String name){
this.name = name;
}
}
package demo.java.concept.abstraction.example3;
// 不動産を賃貸する規約
public interface Rent {
// 賃貸する
void rent();
}