Java 面向对象编程

面向对象的简介

  • 面向对象是以标准的模块化设计,并且可以重用特征,
  • 面向过程对于一个问题的解决方案不会考虑重用的设计
  • 面向对象设计的三大特征
    • 封装性:内部的操作对外部而言不可见,限制访问的安全
    • 继承性:在已有结构的的基础上进行功能的扩充
    • 多态性:在继承性的基础上扩充而来的概念,指的是类型的转换处理
  • 面向对象的开发步骤
    • OOA:面向对象分析
    • OOD: 面向对象的设计
    • OOP: 面向对象的编程

类与对象的简介

  • 类是对某一类事物的共性的抽象概念,而对象描述的是一个具体的产物
  • 类的组成
    • 成员属性:年龄,名字等
    • 操作方法:定义对象具有的处理行为

类与对象的定义

  • 类是一个独立的结构体,所以需要使用class来进行定义,主要由方法和属性所组成
  • 产生对象步骤
    • 声明对象
    • 实例化对象

对象内存分析

Person per = new Person();

  • 堆内存:保存的是对象实例的具体信息,在程序中堆内存的开辟是通过new完成的
  • 栈内存:保存的是一块堆内存的地址。通过地址找到堆内存,而后找到对象信息
  • 所有的对象在调用属性和方法之前必须进行实例化,否则无法使用报空指针NullPointException

对象引用分析

  • 类是引用数据类型
  • 存在引用传递,当两个引用变量指向同一个对象实例时,修改会对两个变量都生效

引用与垃圾产生分析

  • 垃圾的产生是没有任何栈内存所指向的堆内存空间
  • 一个栈内存只能保存一个堆内存的的地址数据,如果发生修改,则原保存的地址数据将彻底消失

成员属性的封装

对属性进行private的私有使用保护,不被外部程序随意修改数据

构造方法和匿名对象

  • 构造方法名称必须与类名称保持一致
  • 构造方法不允许设置任何返回值类型,无返回值
  • 构造方法在使用new关键字自动调用
  • 一个类至少存在有一个构造函数,永恒存在
  • 区分普通方法,两者对的调用时机不同
  • 匿名对象没有引用,调用结束就会进行回收

this关键字调用本类属性

  • 当前类中的属性:this.属性
  • 当前类的构造方法,普通方法
  • 描述当前对象

this调用方法

  • 构造方法在new实例化对象的时候调用
  • 普通方法在实例化对象后才可以调用
  • 评价一个代码的好坏
    • 代码结构可以重用,提供的是一个中间独立的支持
    • 我们的目标是没有重复
  • this()必须放在首行,必须保留程序出口避免死循环

声明static属性

  • 定义公共属性,通过类去修改属性值
  • static 属性值虽然定义在类中,但是其并不受类实例对象的控制
  • 在进行类设计首选非static属性(95%),而考虑到公共属性则考虑

声明static的方法

  • 通过类名调用
  • 不能加this
  • static 方法只允许调用static属性和方法
  • 非static方法允许调用static属性和方法
  • 所有的static属性和方法都可以在没有实例化对象的前提下使用,而非static则必须实例化后使用

普通代码块

  • 定义在方法中的代码块
  • 可以对方法进行一些结构的拆分,以防止相同变量名称所带来的的影响

构造块

构造块会有限于构造方法执行,并且每次实例化的时候都会调用构造块的代码

静态代码块

主要指通过static关键字定义的代码块

  • 静态代码块优先于构造代码块,并且不管有多少个实例对象,都只会执行一次。
  • 父类的代码块优先子类执行

数组的基本定义

  • 大量引用类型数据的创建
  • 数组的动态初始化,元素默认值为数据类型的默认值
  • 数组的静态初始化