1.封装
- 属性私有
- 对外提供公有的getter/setter
- Fruit的例子
package com.soft1841.week7;
/**
* 水果类
*/
public class Fruit {
//名称
public String fruitName;
//价格
private double fruitPrice;
//产地
protected String origin;
public double getFruitPrice() {
return fruitPrice;
}
public void setFruitPrice(double fruitPrice) {
this.fruitPrice = fruitPrice;
}
}
package com.soft1841.week7;
public class FruitApp {
public static void main(String[] args) {
Fruit fruit = new Fruit();
fruit.fruitName = "苹果";
System.out.println(fruit.fruitName);
fruit.setFruitPrice(8.8);
System.out.println(fruit.getFruitPrice());
fruit.origin = "山东烟台";
System.out.println(fruit.origin);
}
}
2.类之间的关系
-
纵向关系:比较清晰
- 继承:父子关系——extends
- 实现:类对接口的实现——implements
-
横向关系:取决于语义
- 依赖
- 双方的地位往往是独立平等的(地位)
- 是偶尔的、临时性的、不频繁的(依赖程度)
- 代码层面的表现形式而言,往往是局部的变量
- 类B以参数的形式传入类A的方法。
- 类B以局部变量的形式存在于类A的方法中。
- 类A调用类B的静态方法。
- 员工和游轮
- 关联
- 双方的地位往往是独立的、平等的(地位)
- 是长期的、稳定的、频繁的(依赖程度)
- 代码层面的表现形式而言,关联往往以全局属性的形式存在
- 员工和手机
- 聚合
- 双方的地位不是平等的,是整体和部分之间的关系(地位)
- 是长期的、稳定的、频繁的,这种关系比关联更强,以至于在形式上出现了整体和部分之间的关系。整体和部分都有自己的生命周期,一方的消失另外一方不会跟着消失。(依赖程度)
- 代码层面的表现形式而言可参考关联
- 公司和员工
- 组合
- 双方的地位不是平等的,是整体和部分之间的关系(地位)
- 比聚合更强,部分的生命周期取决于整体,部分随着整体的消失而消失(依赖程度)
- 代码层面的表现形式而言可参考关联
- 区分是聚合还是组合的核心点是在生命周期
- 公司和部门
- 依赖
参考文章:点这里