面向对象思想总结
一.三大特性
1.封装
利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。 隐藏内部实现的细节,保留对外的接口(如同一个插座内部连线不可见但是并不影响插头的使用)。
//封装的例子
public class Person {
private String name;
private int gender;
private int age;
public String getName() {
return name;
}
public String getGender() {
return gender == 0 ? "man" : "woman";
}
public void work() {
if (18 <= age && age <= 50) {
System.out.println(name + " is working very hard!");
} else {
System.out.println(name + " can't work any more!");
}
}
}
封装的优点:
主要最常用的优点有两个
- 降低系统耦合度
2.减轻系统的维护负担,使得调试时尽量不影响其他模块
2.继承
父类与子类是IS-A关系,即遗产关系,是完全继承——注意此处的完全继承关系是子类继承父类的所有非私有属性和方法。
1.继承需要遵循里氏替换原则,即子类对象必须完全替换掉父类对象
2.父类引用指向子类对象,即向上转型
Animal animal = new Cat();//此为典型
3. 多态
多态分为两种:
1.编译时多态:即方法的重载
2.运行时多态:即定义的对象引用所指向的具体类型在运行期间才确定
运行时多态的三个条件:
1.继承
2.复写
3.父类对象引用指向子类对象(向上转型)
例子如下–很典型的一种继承
public class Instrument{
public void play(){
System.out.println("Instrument is playing.");
}
}
public class Wind extends Instrument{
public void play(){
System.out.println("Wind is playing");
}
}
publlic class Percussion extends Instrument{
public void play(){
System.out.println("Percussion is playing") ;
}
}
public class Music {
public static void main(String[] args){
List<Instrument> instruments = newArryList<>();
instruments.add(new WInd());
instruments.add(new Percussion());
for(Instrument instrument:instruments){
instrument.play();
}
result:
Wind is playing.
Percussion is playing.
二.设计原则
主要设计原则
1.单一责任原则
即一个类只负责一件事,若负责多件事就需要拆分类
2.开放封闭原则
即一个类不允许外部直接修改类内的值,在添加新功能时也不需要修改原有已经写好的代码
3.里氏替换原则
子类对象必须能够替换掉所有父类对象
4.接口分离原则
不强迫用户使用他们不需要的接口
即 尽量使用单一接口来代替多接口
5.依赖倒置原则
高层模块不应该依赖底层模块,两者都应该依赖于抽象
依赖于抽象的含义是:
- 任何变量都不应该持有一个具体类的引用
- 任何类都不应该从具体类派生
- 任何方法都不应该覆写他的任何基类已实现的方法
第二篇博客完结,撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。