工作几年再回头聊这些四大特性感觉很easy,的确这是Java的入门知识,但是要把这几个特性说清楚及平时怎么使用,估计好多人含糊其辞,大家估计都是心里明白,爱在心中口难开。这其实是我们对Java的三大特性理解不深,我也借此机会深入理解下Java的三大特性。
一,封装
封装的定义:隐藏对象的属性及实现细节,仅对外公开访问接口,控制外部访问对外接口的访问权限,使对象内部数据及数据操作结合一个整体-类。
封装的目的:增强对象的安全性及简化编程,访问者不需要了解内部 具体实现,只用通过开放的外部接口,当然对外的接口我们可以限制访问权限,对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作
封装的好处:
1.隐藏信息,实现细节,对外开放接口,并控制接口访问权限,比如用户的账号密码是不会让访问者看到,但是我们可以通过登陆接口控制用户的登录
2.良好的封装能减少代码的耦合,当然这个需要
3.专业的分工,单一职责原则-每一个类只负责一项任务,这也是我们写代码会潜意识会遵循这个原则,而不会把人的属性写到牲畜的类里
二,继承
如果两个类的属性,方法相同或相似,我们可以使用继承降低代码的复用。Java中所有的类直接或间接继承于Object类,Object是所有类的父类,而所有子类继承父类的属性,方法,除过父类私有的属性及方法(private修饰),子类可重写父类方法,
继承的特点:
1.子类可以拥有父类非私有的属性及方法,父类的构造方法子类也不能继承
2.子类可以拥有自己的属性与方法,
3.子类可以重写父类的方法,一般这时父类的方法不能满足子类的需求
4.Java的继承是单继承,子类最多只能拥有一个父类
5.向上转型,就比如狗属于动物,我们可以直接叫狗是动物,比如:List list = new ArrayList();
继承的缺陷:
1,继承破坏了封装,父类的属性方法对于子类来说是透明的,这与封装是相背离的
2,继承是一种强耦合关系,代码结构中乱用继承会造成牵一发而动全身
继承的使用:
考虑子类是否要向上转型,如果子类是要向上转型的那用继承合适不过了,如果不是向上转型那就请慎用继承
三,抽象
抽象是现实的真实反应,但却不和任何具体实现绑定。Java的抽象主要是抽象类和接口。
抽象的好处:
1.把对象的共性抽象起来,使的代码编写简单,容易维护,
2.定义接口或抽象类规范,所有实现或继承的类或子类都要遵循这些规范,
3.抽象是对现实的真实反应,但又是高度抽象的,是不能被实例化
四,多态
不同类对象对同一消息作出的不同反应,即猫狗都属于动物,猫叫是咪,狗叫是汪。
多态存在的条件:
1.必须是继承关系
2.子类重写父类方法
3.父类引用指向子类对象
多态的分类:
1.编译期间,即同一个类中方法的重载
2.执行期间,即子类对父类的方法的重写
使用多态的好处:
1.扩充性:多态对代码有扩充性,增加子类不影响其他子类的执行,
2.接口性:多态是超类对子类提供共同接口,子类根据自己情况进行覆盖或实现