6. 面向对象
6.1 对象的定义
面向对象(Object Oriented Programming,OOP),本质就是以类的形式组织代码,以对象来组织数据。面向对象的思想对于描述宏观上把握、整体上合理分析是很高效的,但是在具体到微观操作的时候,仍然需要面向过程的思想去解决。
三大特性:封装,继承,多态。
先有对象后有类,类是抽象的,对象是具体要描述的事物。
对于代码来说,类是对象的模板,如Student类是一种类,而每一个不同的学生对于的该类,根据个体差异从而确定该类参数的具体值,所形成的具体变量对象,这就是对象。
Student student = new Student
| |
类 对象
类是一种抽象的数据类型,它是对于一类事物的整体描述或者定义,不是一个具体的事物。
对象是抽象概念的具体实例,能展现出具体的特性。
6.2 构造器
类比c++,构造器就是构造函数,为一个类初始化一些属性,默认的构造其就是一个空方法。
在使用new关键字创建对象的时候,除了分配了内存,同时也进行了默认初始化。
构造器也可以叫构造方法(构造函数狂喜+++),在创建对象的时候是必须调用的,其有以下两个特点:
-
必须和类名相同。
-
必须是无返回类型,但也不能写void,例如:public Student(){}。
public class Dog { String name; public Dog(){ this.name = "puppy"; } public Dog(String name//可以多个参数){ this.name = name; } }
以上是有参构造和无参构造两个情况,其中无参构造可以是空方法。
6.3 封装
“该露的露,该藏的藏”,追求高内聚,低耦合。内部数据细节应该由自己完成,不允许外部干涉,仅仅暴露少量的方法给外部使用。
封装就是数据的隐藏,一般是禁止直接对对象中的数据进行访问的,而是换做一种操作接口来访问。
一般来说,类当中的属性应当添加private修饰词,以保证其安全性:
public class Dog
{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
再通过getName、setName方法进行操作,在方法内设置条件,这样能避免非法参数破坏系统。
封装的意义有以下几点:
- 提高程序安全性,保护数据。
- 隐藏代码细节。
- 统一接口。
- 提高系统可维护性。