三大基本特性
1. 封装
封装就是隐藏对象的属性和实现细节,仅对外开放接口,增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过对外开放的接口,以特定的访问权限来调用对象的属性
2. 继承
Java是单继承模式,继承是面向对象编程的核心,因为它允许创建分等级层次的类,这也符合生物界门纲目科属种划分概念。万物皆为对象,对象皆有类
3. 多态
多态分为编译时多态和运行时多态。
其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的方法。通过编译之后会变成两个不同的方法,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是大家通常所说的多态性,例如动物吃东西:
熊猫类继承动物类,并实现吃的方法,是吃竹子。
灰熊类继承动物类,并实现吃的方法,是吃鱼。
public class Animal {
public void eat() {
}
}
class AiluropodaMelanoleuca extends Animal {
public void eat (){
System.out.println("熊猫吃竹子了.");
}
}
class UrsusArctos extends Animal {
public void eat (){
System.out.println("大灰熊吃鱼了.");
}
}
多态的优点
- 消除类型之间的耦合关系
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
多态存在的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象
五大基本原则
1. 单一职责原则(SRP)
一个类应该有且只有一个去改变它的理由,这意味着一个类应该只有一项工作。
2. 开放封闭原则(OCP)
对象或实体应该对扩展开放,对修改封闭。
3. 里氏替换原则(LSP)
在对象 x 为类型 T 时 q(x) 成立,那么当 S 是 T 的子类时,对象 y 为类型 S 时 q(y) 也应成立。(即对父类的调用同样适用于子类)
4. 依赖倒置原则(DIP)
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。具体实现应该依赖于抽象,而不是抽象依赖于实现。
5. 接口隔离原则(ISP)
不应强迫客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法,使用多个专门的接口比使用单个接口要好的多!