一.面向对象的概述:
面向对象对于初学java的同学来说,是比较难理解的。下面我将面向对象做一个较全面的总结,同时对自己前一段时间面向对象的学习做一个回顾,复习。
1、 定义:
面向对象是相对于面向过程而言的一种编程思想,是基于面向过程的(也就是说没有面向过程就没有面向对象,面向过程是面向对象的基础)。面向对象更接近于人们日常生活中的思维习惯, 将功能封装进对象,强调具备了功能的对象,不关注具体实现过程,而面向过程则更侧重于实现的过程。
2、 思想特点:
1) 面向对象更符合人们思考习惯的思想;
2) 将复杂的事情简单化
3) 把执行者变成了指挥者
3、 面向对象举例(与面向过程对比):
1)吃烤鸭
(1)面向过程:
买一对小鸭子
养鸭子
养大之后大鸭子下小鸭子,当满足鸭子可以自然繁殖时
宰鸭子(大鸭子):杀鸭子,开水拔毛,开膛破肚,整理鸭杂
上网学习如果做烤鸭
买作料,食材,工具
开始做鸭子
。。。
在做好鸭子后,饱含泪水,终于吃上了烤鸭
(2)面向对象:
调用全聚德的为我提供烤鸭的方法,大吃一顿,给全聚德传递一个参数(money!)
注意:
全聚德用什么鸭子?不知道 属性
全聚德怎么做鸭子?不知道 方法
2)将大象放进冰箱:
(1)面向过程的思想:
打开冰箱
把大象放进去
关上冰箱
//又来了一只骆驼,骆驼也想进冰箱
我需要修改所有的代码:
打开冰箱
把骆驼放进去
关上冰箱
2)面向对象:
冰箱.打开()
大象.进去()//骆驼.进去()
冰箱.关闭()
class 冰箱:
public void打开的方法(){
}
public void关闭的方法(){
}
class 大象:a
public void进去(){
}
class 骆驼:
public void进去(){
}
//又来了一只骆驼,骆驼也想进冰箱
只需要修改部分代码
二、类与对象
任何编程语言都是用于描述现实世界事物的,现实世界的事物都有自己的特征和行为。
1、 类:是java语言的最基本的单位。类的属性就对应于现实世界事物的特征,类的成员方法(成员函数)对应于事物的行为。所以所类是一组相关的属性和行为的抽象。
2、 对象:是该类事物的具体体现(实例)。
3、 总结:
1) Object(物体,对象)
将现实事物抽象成类
将人这种现实事物抽象成Person类
2) 类的注意事项:
(1) 类中属性叫做成员变量
(2) 类中功能叫做成员函数(成员方法)
(3) 成员函数与成员方法均叫做类的成员
(4) 成员变量是直接定义在类中的,与成员函数是平等的关系
(5) 访问对象的属性:对象名.属性名 叫做:该对象的XX属性
(6) 调用对象的方法:对象名.方法或者对象名.方法名()
4、 举例:
人类和具体的对象人的实例:
class MyObj
{
public static void main(String[] args)
{
Person p = new Person();//new了一个人类的实例对象p
p.name = "zhangsan";
p.age = 23;
p.sex = "男";
p.eat();//p的实例对象调用人类的eat方法
p.sleep();
p.hitBeanBean();
System.out.println(p.name);
System.out.println(p.age);
System.out.println(p.sex);
System.out.println(p.isLoveCode);
method();
}
public static void method(){
System.out.println("这个方法被调用了!");
}
}
//定义人类
class Person
{
String name;
int age;
String sex;
boolean isLoveCode = true;//是否热爱编程
public void eat(){
int a = 10;
System.out.println("我吃了!");
}
public void sleep(){
System.out.println("我睡了!");
}
public void hitBeanBean(){
System.out.println("我爽了!");
}
}
三、类的组成
类由成员变量(即就是类的属性)、构造方法和成员方法组成。
1、 成员变量:
1) 成员变量定义在类中,方法外。针对类中的任何方法都有效。
2) 注意事项:在方法中使用变量的时候,先找局部范围,再找成员范围。
2、 构造方法:
1) 用于创建对象,对数据进行初始化。
2) 特征:
(1) 方法名和类名相同。
(2) 没有返回值类型(注意:返回值为null时,是属于有返回值)。
(3) 没有返回值。
3) 注意事项:
(1) 如果没有写构造方法,系统给出一个无参默认构造方法。
(2) 如果写了构造方法,系统将不再提供构造方法。
3、 成员方法:
1) 成员方法完成一些特定的功能。
2) 方法的重载:
(1) 方法名相同,参数列表不同(参数的个数,类型、顺序的不同)。
(2) 与返回值类型无关。
四、封装
1、封装是将一些对象的实现细节和相关的属性隐藏起来,外界无法访问该对象的属性也不知道其实现的细节,仅对外提供公共的访问方式。
2、常见的封装有:对类、方法、private修饰成员变量的封装;
3、封装的好处:
1) 将变化隔离:将系统中经常变化的部分和稳定的部分隔离,有助于增加复用性,并降低系统耦合度。
2) 便于使用:封装了很多常用的方法,当需要的时候直接调用,方便了开发人员的使用,提高了开发效率。
3) 提高了重用性
4) 提高了安全性
4、 封装的弊端:让数据访问变的复杂。
5、封装的原则:
1) 将不需要对外提供的内容都隐藏起来。
2) 把属性都隐藏,提供公共方法对其访问。
6、代码体现:
类中的所有成员变量私有,给出对应的get/set方法。
class Student
{
private String name;
private int age;
public Student(){}
public Student(String name,int age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}