面向对象(上)学习笔记一

一、学习面向对象内容的三条主线

  • Java类及类的成员:属性、方法、构造器;代码块、内部类
  • 面向对象的三大特征:封装性、继承性、多态性、(抽象性)
  • 其他关键字:this、super、static、final、abstract、interface、package、import

二、何为“面向对象”的编程思想

  • 顿悟 or 渐悟

三、面向过程(pop)与面向对象(oop)

  • 面向对象的面向过程的含义

    • 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。
      1. 把冰箱门打开
      2. 抬起大象,塞进冰箱
      3. 把冰箱门关闭
  • 面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。 ``` 人{

    1. 打开(冰箱){
    2. 冰箱.开开();
    3. }
    4. 抬起(大象){
    5. 大象.进入(冰箱);
    6. }
    7. 关闭(冰箱){
    8. 冰箱.闭合();
    9. }

    }

冰箱{ 开开(){} 闭合(){} }

大象{ 进入(冰箱){ } } ```

  • 面向对象的三大特征

    • 封装
    • 继承
    • 多态

四、面向对象的两个要素

  • 类:对一类事物的描述,是抽象的概念

  • 对象:实际存在的个体,是实际存在的概念

    • 面向对象程序设计的重点就是类的设计

    • 设计类就是设计类的成员

  • 类的成员

    • 属性:对应类中的成员变量
    • 行为:对应类中的成员方法
  • 类和对象的使用

    • 创建类,设计类的成员
    • 创建类的对象
    • 通过“对象.属性”或“对象.方法”调用对象的结构
  • 如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static)。意味着:如果我们修改了一个对象的属性a,则不影响另外一个对象属性a的值。

  • 对象的内存解析
    day08_java面向对象(上)学习笔记1 - 图1
    虚拟机栈:即为平时提到的站结构。我们将局部变量存储到栈结构中
    堆:我们将new出来的结构(比如数组、对象)加载在堆空间中。补充对象的属性(非static的)加载在堆空间中。
    方法区:类的加载信息、常量池、静态域
    day08_java面向对象(上)学习笔记1 - 图2
    编译完源程序以后,生成一个或多个字节码文件。我们使用JVM中的类加载器和解释器对生成的字节码文件进行解释运算。意味着需要将字节码文件对应的类加载到内存中,涉及到内存解析。

  • 类中属性的使用

    • 属性(成员变量)vs 局部变量

      • 相同点:1、定义变量的格式都是:数据类型 变量名 = 变量值;2、先声明,后使用。3、变量都有其对应的作用域。
      • 不同点:1、在类中声明的位置不同,属性:直接定义在类的一对{}内。局部变量:声明在方法中、方法形参、代码块内、构造器形参、构造器内部的变量。2、关于权限修饰符的不同。属性:可以在声明属性时,指明其权限,使用权限修饰符。常用的权限修饰符:private、public、缺省、protected。局部变量:是不可以使用权限修饰符的。3、默认初始化值的情况。属性:类的属性,根据其类型都有默认初始化值。整型(btye、short、int、long):0;浮点型(float、double):0.0;字符型(char):0或’\u0000’;布尔型(boolean):false;引用数据类型(类、数组、接口):null。局部变量:没有初始化默认值,意味着我们在调用局部变量之前,一定要显示的赋值,特别地,形参在调用的时候,我们赋值即可。4、在内存中加载的位置,属性:加载到堆空间中(非static的属性),局部变量:加载到栈空间中。

day08_java面向对象(上)学习笔记1 - 图3

  • 类中方法的使用

    • 方法:描述类应该具有的功能
    • 方法的声明:权限修饰符 返回值类型 方法名(形参列表){ 方法体 },注意:static、final、abstract来修饰的方法,后面再讲。
    • 说明:

      • 权限修饰符:Java规定的4中修饰符:private、public、缺省、protected—-封装性再细讲。
      • 返回值类型:有返回值 vs 没有返回值

        • 如果方法有返回值、则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量。
        • 如果方法没有返回值,则方法声明时,使用void来表示,通常,没有返回值的方法中就不需要使用return,但是,如果使用的话,只能“return;”表示结束此方法。
      • 方法名:属于标识符,遵循标识符的规则和规范,“见名知意”。
      • 形参列表:方法可以声明0个、1个、或多个形参

        • 格式:数据类型1 形参1,数据类型2 形参2,……
      • 方法体
    • return关键字的使用

      • 使用范围:使用在方法体中
      • 作用:1、结束方法。2、针对于有返回值类型的方法,使用“return 数据”返回所要的数据。
      • 注意点:return关键字后面不可以声明执行语句。
    • 方法的使用中,可以调用当前类的属性或方法,特殊的:方法A中调用方法A称为递归。
    • 方法中不可以定义方法。