面向对象总结
一、编程思想
1.1、面向过程
面向过程:“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。
关注的重点是过程、步骤。 以执行者的角度考虑问题,做事情。
1.2、面向对象
面向对象:”面向对象“(Object Oriented)的主要思想是把构成问题的各个事务分解成各个对象。
关注的重点是对象。 以指挥者的角度思考问题。
1.3、设计过程
思考问题域中涉及到的对象。
设计这些对象。(构建类)
处理对象和对象之间的关系。
- 继承关系:is - a
- 实现关系:实现接口。
- 依赖关系:一个类作为另一个类的方法的参数。
- 关联关系:一个类作为另一个类的属性。
二、 设计原则
-
单一职责原则SRP(Single Responsibility Principle)
类的功能设计要单一
-
开放封闭原则OCP(Open-Close Principle)
一个模块对于拓展是开放的,对于修改是封闭的
-
里式替换原则LSP(the Liskov Substitution Principle)
子类可以替换父类出现在父类能够出现的任何地方
-
依赖倒置原则DIP(the Dependency Inversion Principle)
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象
-
接口分离原则ISP(the Interface Segregation Principle)
设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好
三、类和对象
3.1 类
具有相同属性和行为特征的一类事物的抽象描述
- 类的属性:成员变量,描述类的外部的特征。
- 类的功能:成员方法,描述类的行为功能。
示例代码:
public class Person{
//类名必须遵从Pascal命名规则
String name; //属性(变量名遵从Camel命名规则)
int age;
public void eat(){
//方法(同属性命名规则)
}
}
构造方法
构造方法,又叫构造器/构造函数/Constructor。一个特殊的方法
特点:
- 修饰符:只允许访问权限修饰符
- 返回值:无返回值与返回类型
- 方法名:必须和类名一致。
- jvm默认提供无参构造方法,当自己写上有参构造后,不再提供,需要自己提供无参构造
- this()与super()方法必须是构造方法第一行
- 不能同时存在this()与super()
示例代码:
public class Person{
String name;
int age;
public void Person(){
}
public void Person(String name,int age){
this.name = name;
this.age = age;
}
}
3.2 对象
类的一个具体的实例。调用类的构造方法,使用new关键字,在堆中开辟内存,创建对象。
- 对象可以访问类中的数据:赋值,取值
- 对象可以执行类中的方法:将方法进行调用。
代码示例
Person p1 = new Person();
类和对象的关系:<