面向对象是由IBM的smalltalk语言最先推广的,编程语言的进化:C→ C++→ Java,C一般是用于底层内核部分开发,C++一般是用于封装核心内核,例如前期做的系统开发项目,中间层框架的开发都是用的C++,封装底层的接口提供给上层App使用;Java则是业务开发后台封装,前端只需要用简单的脚本语言调用后台即可。
编程语言的发展阶段,面向过程:指的是针对某一个问题单独出解决方案及代码开发。但是随着软件规模的扩大,过程语言在解决实际问题时出现了力不从心,人们希望编写出易维护、易扩展和易服用的代码。面向过程语言缺少了一个最本质的概念,那就是“对象”。现实生活中,行为往往归结为某个具体的“主体”所拥有,即某个对象所拥有,并且该对象负责产生这样的行为。面向对象:以一种组件化的形式进行代码的设计,最核心的内容就是“对象”。
面向对象的三大特征:
封装 | 将数据和对数据的操作封装在一起,保护内部定义的结构的安全性。 |
继承 | 在已有的程序结构上,继续扩充新的功能 |
多态 | 主要包括方法重载和方法覆写。 方法重载(overload):函数名字相同,但是方法参数类型或者个数不同。即向操作传递不同的参数,对象可以根据参数产生一定的行为; 方法覆写(override):和继承有关,子类重写父类的方法,方法的名字、参数个数、参数的类型、返回类型一致或者是父类方法返回类型的子类。即同一操作被不同类型的对象调用时可能产生不同的行为。 |
总结下来,经历的几个过程为:
OOA(Object-Oriented Analysis):面向对象分析;
OOD(Object-Oriented Design):面向对象设计;
OOD(Object-Oriented Programming):面向对象编程.
-
类与对象
类是共性的集合,对象是一个性的产物,除了属性还有功能。类是模板,对象是实例。
类的格式为:
class Book{ private String title; private double price; public Book(String title,double price) { this.title = title; this.price = price; } public String getTitle() { returntitle; } public void setTitle(String title) { this.title = title; } public double getPrice() { returnprice; } public void setPrice(double price) { this.price = price; } } |
对象是类的一个实例,对象的定义格式为:
类名 对象名= new类名();
Book book = new Book(“Oracle”, 39.22); |
类是引用数据类型,需要用户用new为其开辟内存空间。内存分为堆内存(heap),主要保存对象属性内容,需要用new进行开辟;栈内存(stack),主要保存每一块堆内容的地址,
-
备注
如果对象可以在外部直接访问类中属性,会造成各种问题。所以类的一个特性发挥了作用,那就是封装性,让属性不可见就行了,这样对象就不可以直接访问属性。
所有类中定义的属性都要求定义为private,对象如要访问就在类中定义set()、get()方法。
-
构造方法
构造方法是为对象属性初始化服务的,使用new()生成对对象先执行的是构造方法。
-
引用传递:
把对象A赋值给B, Book book2 = book;
两个对象指向同一块堆内存空间,任一修改两者都变化。