has-a、use-a、is-a的關係說明
阿新 • • 發佈:2021-01-04
技術標籤:java
has-a、use-a、is-a的關係說明
-
has-a、use-a、is-a都是用來表示類與類之間的關係。
-
has-a表示包含關係,是整體與部分的關係,同時它們的生命週期都是一樣的。
-
例如:
public class Driver { private String name; private String number; private int drinkStatus; }
public class Car { private String number; private int speed; private Driver driver;
分別有一個司機類和一個車輛類,車輛類有一個屬性是司機型別的屬性,這就表示了車輛類包含了司機類。
-
-
use-a表示使用關係,依然是其中一個擁有另外一個,但是不負責銷燬,也就是宣告週期不一樣。
-
例如
public class Police { public void check(Car car){ if(car.getSpeed() > 100){ System.out.println("車輛超速,被攔截。車牌號:" +car.getNumber() +
有一個警察類,他有一個臨檢的方法,這個方法要輸入一個車輛型別的引數,這就是use-a的關係。
-
-
is-a表示繼承關係,父類與子類,具有很高的耦合度。。
-
繼承關係就是一個子類繼承父類,使用關鍵字extends,子類繼承父類後,子類就擁有父類的屬性和方法。
-
例如:
public class People { private String name; private int age; private String gender; public People(){} public People(String name,int age,String gender){ this.name = name; this.age= age; this.gender = gender; } public void intro(){ System.out.println("大家好,我的名字叫" + this.name); } }
這裡有一個人的類,他有屬性姓名、年齡和性別,還有一個介紹自己的方法。
public class Student extends People{ private int number; private String major; public Student(){} public Student(String name,int age,String gender,int number,String major){ super(name,age,gender); this.number = number; this.major = major; } public void lesson(){ System.out.println("我今天要上" + this.major); } }
然後有個學生類,它繼承了人的類,所以它擁有人類的屬性和方法,它也擁有姓名、性別和年齡,還有介紹自己的方法,同使它能擁有自己獨特的屬性,例如學號和專業,還有自己可以上課的方法。所以繼承既可以繼承父類的屬性和方法,同時子類也能擴充套件自己獨特的屬性和方法。
-