类和接口开发规范

接口和类

引导故事

从前有一个国家,国王深知知识改变命运,决定:全国修建学校,要求:一名有建校资质的校长。有一名具备建校资质的校长才能称为学校,领取国家补助;没有一名建校资质的校长不能称为学校,不能领取国家补助。

在引导故事中:类对应学校,校长可以称之为接口、抽象类。

接口 和 抽象类

在某种程度上,接口可以称为规范,抽象类可以称为模板。接口相较抽象类更加灵活。

使用学校模板可以创建学校,只是创建的学校细节不一致。举例:A学校是一马路小学,B学校是中央路小学。

接口示例

// 学校建立条件<规范>
public interface SchoolCondition {
    
    boolean haveHeadMaster();   
}

// 抽象类,学校模板
public abstract class SchoolTemplate implements SchoolCondition {
    
}

注意

  1. 由于java支持单继承、多实现,且自从java 8 中出现缺省方法,推荐使用接口定义规范。
  2. 接口应当用来定义类型,不应该用来导出常量。

在引申故事模型中,类对应学校。

封装

封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问,保证只能有指定方法名<set方法或者其他方法>才可以访问类内部属性或方法。

注意:封装保证对象中属性变更可感知:在set方法添加监听自定义逻辑。

类继承

继承虽然是优秀的机制,但是违背了封装原则。

java中支持类的继承,子类可以继承父类的属性和方法,不过由于访问权限修饰符限制,无法使用特定属性和方法。

注意:类继承是代码重用的一种方式,但不是最佳方式。

访问权限限制

java中四种访问权限修饰符:private、default、protected、public。

使用访问权限修饰符限制子类调用父类的属性和方法。

可变性最小化

使用final关键字保证类中的属性、方法不会被篡改、重写。

复合优先于继承

理由:子类继承父类是为了使用父类方法,父类的版本升级可能导致子类的不可用。

总结:继承的目标是使用继承类的方法,在现有类中添加继承类的一个实例,也可以使用继承类方法,这就是复合。也可以称为转发。

注意
  • 支持继承的类必须有文档,否则不要继承。
  • 使用嵌套类时,静态成员类优于非静态成员类。
  • 永远不要将多个顶级类放在一个源文件中。

观 JAVA EFFECTIVE有感

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值