• 第四章:面向对象


    本章内容

    • 面向对象思想
    • 类与对象及其使用
    • 对象的内存图
    • 成员变量和局部变量的区别
    • 匿名对象
    • 封装(private)
    • this关键字
    • 构造方法
    • static关键字

    面向对象思想概述

    1,面向对象思想概述

      •   面向对象是基于面向过程的编程思想面向对象思想的特点

       面向对象思想的特点 

    • 是一种更符合我们思想习惯的思想
    • 可以将复杂的事情简单化
    • 将我们从执行这变成指挥者(角色发生了转换

    2,面向对象开发,设计,特征

    • 面向对象的开发

        就是不断的创建对象,使用对象,指挥对象做事情

    • 面向对象的设计

        管理和维护对象之间的关系

    • 面向对象的特征

        封装(encapsulation)

        继承(inheritance)

        多态(polymorphism)

    3,类与对象的关系

    我们学习编程语言,就是为了模拟现实世界的事务,实现信息化。

    • 现实事物的描述
      • 属性:该事物的描述信息
      • 行为:该事物能够做什么
    • 我们学习Java的最基本单元是类,所以我们应该把一个事物用最基本的类来体现。  

    4,类与对象的关系

    • 类:是一组相关的属性和行为的集合
    • 对象:是该类事物的具体体现
    • 举例:
      • 类:学生
      • 对象:班长是一个对象

    5,类的定义

    • 现实世界的事物
      • 属性:人的身高,体重等
      • 行为:人可以吃饭,学习等
    • Java中用class描述事物也是如此
      • 成员变量:事物的属性
      • 成员方法:事物的行为
    • 定义类其实就是定义类的成员(成员变量和成员方法)
    • 学生类(举例):
      • 如何定义
        • 按照事物到类的过程一步步分析
      • 如何使用
        • 创建对象
          •   类名    对象名 = new  类名();
        • 对象.成员变量
        • 对象.成员方法

    6,对象内存图(???)

    • 1个对象的内存图
      • 一个对象的基本初始化过程
    • 2个对象的内存图
      • 方法的共用
    • 3个对象的内存图
      • 其中有两个引用指向同一个对象

    7,成员变量和局部变量的区别

    • 在类中的位置不同
      • 成员变量:类中方法外
      • 局部变量:方法内或方法的声明上
    • 在内存中的位置不同
      • 成员变量:堆内存中
      • 局部变量:栈内存中
    • 生命周期不同
      • 成员变量:随着对象的存在而存在,随着对象的消失而消失
      • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
    • 初始化值不同
      • 成员变量:有默认的初始化值
      • 局部变量:没有默认的初始化值,必须先定义,赋值,才能使用

     8,形式参数

    • 基本类型作为形式参数
    • 引用类型作为形式参数

    9,匿名对象(???)

    • 匿名对象:就是没有名字的对象
      • 是对象的一种简化表示形式
    • 匿名对象的两种使用情况:
      • 对象调用方法仅仅一次的时候
      • 作为实际参数传递

     10,封装的概述

    • 封装的概述
      • 隐藏对象的属性和实现细节,仅对外提供公共的访问方式
    • 好处
      • 隐藏实现细节,提供公共的访问方式
      • 提高代码的复用性
      • 提高安全性
    • 封装原则
      • 把不需要对外提供的内容都隐藏起来
      • 把属性隐藏,提供公共方法对其访问

    11,private关键字

    • private关键字
      • 是一个权限修饰符
      • 可以修饰成员(成员变量和成员方法)
      • 被private修饰的成员只有在本类中才能被访问
    • private最常见的应用
      • 把成员变量用private修饰
      • 提供对应的getXxx( )/setXxx( )方法
      • 一个标准案例的使用

    12,this关键字(???)

    • this:代表所在类的对象引用
    • 记住:
      • 方法被那个对象调用,this就代表那个对象
    • 什么时候使用this呢?
      • 局部变量隐藏成员变量
      • 其他用法后面和super一起讲解

    13,构造方法

    • 构造方法作用概述:给对象的数据进行初始化
    • 构造方法的格式:
      • 方法名与类名相同
      • 没有返回值类型,连void都没有
      • 没有具体的返回值
    • 构造方法的注意事项
      • 如果你不给出构造方法,系统就会默认构造方法
      • 如果你提供了构造方法,系统将不再提供
      • 构造方法也是可以重载的

    14,类的成员方法

    • 成员方法其实就是我们前面讲过的方法
    • 方法的具体划分
      • 根据返回值
        • 有明确返回值的方法
        • 返回值为void的方法
      • 根据形式参数
        • 无参方法
        • 带参方法

    15,一个基本类的标准代码写法

      • 成员变量
      • 构造方法
        • 无参构造方法
        • 带参构造方法
      • 成员方法
        • getXxx();
        • serXxx();
    • 给成员变量赋值的方式
      • 无参构造方法+setXxx();
      • 带参构造方法

    16,一个基本累的标准代码案例

    • 标准的学生类(讲解)
      • 感觉调用getXxx(),输出学生的信息比较麻烦,加入一个方法show(),输出学生对象的成员变量信息
    • 注意
      • 目前的代码是为了练习的一种标准格式
      • 给成员变量赋值有两种方式,可以只写一种
      • 如果不单独获取数据,可以不写getXxx()方法

    17,类的初始化过程

    • Student  student = new Student( );在内存中做了哪些事情?
      • 加载Student.class文件进内存
      • 在栈内存中为s开辟空间
      • 在堆内存中为学生对象开辟空间
      • 为学生对象的成员变量进行默认初始化
      • 对学生对象的成员变量进行显示初始化
      • 通过构造方法对学生对象的成员变量进行赋值
      • 学生对象初始化完毕,把对象地址赋值给s变量

    18,面向对象练习

    19,static关键字

    • 可以修饰成员变量和成员方法
    • static关键字特点
      • 随着类的加载而加载
      • 优先于对象存在
      • 被类的所有对象共享(这也是我们判断是否使用static关键字的条件)
      • 可以通过类名调用
    • static关键字的注意事项
      • 在静态方法中式没有this关键字的 
      • 静态方法中只能访问静态的成员变量和静态的成员方法

    20,静态的内存图

    • 静态的内容存在方法区的静态区

    21,静态变量和成员变量的区别

    • 所属不同
      • 静态变量属于类,又被称为类变量
      • 成员变量属于对象,又被称为实例变量(对象变量)
    • 内存中的位置不同
      • 静态变量存储与方法区的静态区
      • 成员变量随着对象的创建而存在,随着对象的消失而消失
    • 内存出现的时间不同
      • 静态变量随着类的加载而加载,随着类的消失而消失
      • 成员变量随着对象的创建而存在,随着对象的消失而消失
    • 调用不同
      • 静态变量可以通过类名调用,也可以通过对象调用
      • 成员变量只能通过对象调用

    22,main方法是静态的

    • public static void main(String[] args){}
    • public被jvm调用,访问权限足够大
    • static 被jvm调用,不用创建对象,直接类名访问
    • void 被jvm调用,不需要给jvm返回值
    • main一个通用的名字,不是关键字,但是被jvm识别
    • String[] args 以前用于接收键盘录入的

    23,制作帮助文档

    • 制作工具类
    • 制作帮助文档(API)
      • javadoc -d 目录 -author -version ArrayTool.java

    24,如何使用帮助文档

    •  

    25,通过API使用Math类

    26,代码块

    年轻人能为世界年轻人能为世界做些什么
  • 相关阅读:
    【LabVIEW】多列列表框使用汇总
    【LabVIEW】数据类型 汇总
    U-BOOT移植 前准备
    linux 的 输入子系统 与 平台设备系统个人理解
    关于内核编译的理解
    关于 内核编译make menuconfig 不能使用的解决
    函数式接口的使用 (Function、Predicate、Supplier、Consumer)
    获取单列集合,双列集合,数组的Stream流对象以及简单操作
    多线程的创建、匿名内部类方式创建线程、定义、调度步骤
    异常类的使用
  • 原文地址:https://www.cnblogs.com/twinkle-star/p/8902734.html
Copyright © 2020-2023  润新知