第四章:面向对象

本章内容

  • 面向对象思想
  • 类与对象及其使用
  • 对象的内存图
  • 成员变量和局部变量的区别
  • 匿名对象
  • 封装(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,代码块

猜你喜欢

转载自www.cnblogs.com/twinkle-star/p/8902734.html