java中的组合是在类中实现 has-a 关系的设计技术。我们可以使用[java继承](/community/tutorials/inheritance-java-example)或Java中的Object composition来实现代码重用。
Java中的组合
Java合成是通过使用引用其他对象的实例变量实现的。例如,一个
Person
有一个Job
。让我们通过一个Java组合示例代码来了解这一点。
Java组合示例
1package com.journaldev.composition;
2
3public class Job {
4 private String role;
5 private long salary;
6 private int id;
7
8 public String getRole() {
9 return role;
10 }
11 public void setRole(String role) {
12 this.role = role;
13 }
14 public long getSalary() {
15 return salary;
16 }
17 public void setSalary(long salary) {
18 this.salary = salary;
19 }
20 public int getId() {
21 return id;
22 }
23 public void setId(int id) {
24 this.id = id;
25 }
26
27}
1package com.journaldev.composition;
2
3public class Person {
4
5 //composition has-a relationship
6 private Job job;
7
8 public Person(){
9 this.job=new Job();
10 job.setSalary(1000L);
11 }
12 public long getSalary() {
13 return job.getSalary();
14 }
15
16}
下面是一个Java组合示例的测试类,它使用Person对象并获取它的薪水。
1package com.journaldev.composition;
2
3public class TestPerson {
4
5 public static void main(String[] args) {
6 Person person = new Person();
7 long salary = person.getSalary();
8 }
9
10}
Java组合的好处
请注意,上面的java合成测试程序不受Job对象中任何更改的影响。如果你正在寻找代码重用,并且两个类之间的关系是_has-a_,那么你应该使用组合而不是继承。在java中使用组合的好处是我们可以控制其他对象对客户端类的可见性,并且只重用我们需要的对象。另外,如果在其他类实现中有任何更改,例如getSalary
返回String,我们需要更改Person类以适应它,但客户端类不需要更改。组合允许在需要时创建后端类,例如,我们可以在需要时更改Person
getSalary
方法以在运行时初始化Job对象。进一步阅读:你知道Java编程中的一个最佳实践是使用组合而不是继承吗?查看这篇文章详细分析 [组合与继承](/community/tutorials/multiple-inheritance-in-java) 。
Java排版Youtube视频
最近我制作了一个YouTube视频,详细解释了用Java编写的内容,请看下面的视频。Https://www.youtube.com/watch?v=VfTiLE3RZds这就是Java或Java合成示例中的合成。我希望在设计应用程序类时,它能帮助您做出明智的决策。参考资料:维基百科Page