Java面向对象的三大特征和五大原则
Java面向对象的三大特征
封装
封装(Encapsulation)是指属性私有化,根据需要提供setter和getter方法来访问属性。即隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问级别。
封装目的:增强数据安全性,不能让其他用户随意访问和修改数据,和简化编程,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员。
继承
继承(Extend)是指将多个相同的属性和方法提取出来,新建一个父类
Java中一个类只能继承一个父类,且只能继承访问权限非private的属性和方法。 子类可以重写父类中的方法,命名与父类中同名的属性。
继承目的:代码复用。
多态
多态(Polymiorph)可以分为两种:设计时多态和运行时多态。
设计(编译)时多态:即重载(Overrload),是指Java允许方法名相同而参数不同(返回值可以相同也可以不相同)。在同一个类中,允许存在一个或一个以上的同名函数,只要参数类型或参数个数不同即可。
运行时多态:即重写(Override)必须是在继承体系中,子类重写父类方法,JVM运行时根据调用该方法的类型决定调用哪个方法。
多态目的:增加代码的灵活度。
总结归纳
1.Java中应尽量减少继承关系,以降低耦合度。
2.使用多态时,父类在在调用方法时,优先调用子类的方法。如果子类没有重写父类的方法,则再调用父类的方法。
3.Java访问控饰符作用范围表:
本类 | 本包 | 子类 | 外部包 | |
public | ✓ | ✓ | ✓ | ✓ |
protected | ✓ | ✓ | ✓ | X |
default | ✓ | ✓ | X | X |
private | ✓ | X | X | X |
符号含义, ✓:可以访问 X:不可访问
protected java.lang.Object.clone()方法,在一个类中调用另一个类的clone方法提示 ‘clone()’ has protected access in 'java.lang.Object'
错误是因为:另一个类中的clone()方法继承自Object方法。而这个继承的clone()方法只能在另一个类中使用。
而当前调用类和另一个类不存在继承关系,所以不能调用另一个类的clone()方法。
Java面向对象的五大特征
1.单一职责原则:一个类,最好只做一件事,只有一个引起它变化。也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。
2.开放封闭原则:对扩展开发,对修改封闭。
3.里氏替换原则:子类必须能够替换其基类。里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。
4.依赖倒置原则:依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
5.接口隔离原则:使用多个小的专门接口,而不是使用一个大的接口。