面向对象的初步认识

什么是面向对象?

如何面向对象?

为什么是面向对象?还面向什么吗?

一.面向对象的初步认识

1.(了解)面向对象vs面向过程

例:实现人把大象装进冰箱

  • 面向对象:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class{//可以这么理解
open(){//打开冰箱
}
put(){//将大象放进冰箱
}
close(){//关闭冰箱
}
main(){
人 = new 人();
人.open();
人.put();
人.close();
}
}
  • 面向过程:

①人打开冰箱;

②将大象放进冰箱;

③关闭冰箱

2.面向对象的编程专注于类的设计!

1)一个项目或工程, 不管多庞大, 一定是有一个一个类构成的.
2)类是抽象的, 好比是制造汽车的图纸. 而具体的一辆一辆的车, 是根据图纸制造的, 实际上就是类的实例化(即对象)

3.完成一个项目(或功能)的思路

1)所要完成的功能对应的类的对象是否存在.
2)若存在, 则通过对象直接调用对应的类中的属性或方法即可.
3)若不存在, 需要创建类的对象.甚至说, 类都不存在, 就需要设计类.

4.面向对象编程的三条主线

1)类及类的构成成分:属性 方法 构造器 代码块 内部类
2)面向对象编程的特征:封装性 继承性 多态性(抽象性)
3)其它的关键字:this super package import static final abstract interface …

二.类及对象

1.关于类的设计

2.类的组成成分:

1)属性(成员变量, Field)
2)方法(成员方法, 函数, Method)

2.1属性:

成员变量 vs 局部变量

相同点: 1.遵循变量声明的格式: 数据类型 变量名 = 初始化值 2.都有作用域

不同点: 1.声明的位置的不同: 成员变量: 声明在类里, 方法外; 局部变量: 声明在方法内, 方法的形参部分, 代码块内

    2.成员变量的修饰符有四个:public private protected 缺省, 局部变量没有修饰符, 与所在的方法修饰符相同

    3.初始化值: 一定会有初始化值, 成员变量:如果在声明的时候, 不显式的赋值, 那么不同数据类型会有不同的默认初始化值.局部变量: 一定要显式的赋值.(局部变量没有默认初始化值)

  • byte short int long ==>0
  • float double ==>0.0
  • char ==>空格
  • boolean ==>false
  • 引用类型变量==>null

    4.二者在内存中存放的位置不同:成员变量存在于堆空间中; 局部变量: 栈空间中

总结: 关于变量的分类:

  • 1)按照数据类型的不同: 基本数据类型(8种)&引用数据类型
  • 2)按照声明的位置的不同: 成员变量 & 局部变量

2.2 方法: 提供某种功能的实现

  • 1)实例:
1
2
3
public void eat(){//方法体}
public String getName(){}
public void setName(String n){}

格式: 权限修饰符 返回值类型(void:无返回值/具体的返回值) 方法名(形参){}

  • 2)关于返回值类型: void: 表明此方法不需要返回值

有返回值的方法: 在方法的最后一定有return + 返回值类型对应的变量

记忆: void 与return不可以同时出现一个方法内. 像一对“冤家”.

  • 3)方法内可以调用本类的其他方法或属性, 但是不能在方法内再定义方法!

3.面向对象编程的思想的落地法则一:

1)设计并创建类及类的成分
2)实例化类的对象
3)通过“对象.属性”或"对象.方法"的形式完成某项功能

4.类的初始化的内存解析

4.1 内存划分的结构:

  • 栈(stack):局部变量、对象的引用名、数组的引用名
  • 堆(heap):new 出来的“东西”(如: 对象的实体, 数组的实体), 含成员变量
  • 方法区: 含字符串常量
  • 静态域: 声明为static的变量

4.2 理解的基础上, 学会基本的创建的类的对象在内存中的运行.


评论