一、面向对象思考

思想

就像是手工设计动态数组、链表等数据结构一样,要用设计这个字眼去面向对象思考。 同时还要关注类与类之间的关系有关联、聚集、组合,在设计多个类的过程中要有这些意识

image.png
就像是之前的数据结构课程一样,像那样就是面向过程,全都是写函数来实现操作

基本数据类型值及其包装类

都存在java.lang里面

Integer、Long、Float、Double、Boolean、Character、Short、Byte
image.png

基本数据类型和其对象化之后的包装类类型之间的自动转换

Integer intObject = new Integer (2); 等价于 Integer intObject = 2;

BigInteger 类和BigDeciml类用于表示任意大小和精度的整数或是二进制数

二、对象和类

OOP阶梯图

“OOP阶梯图”—— 类的多个特性,同时以对象对基础

面向对象 - 图3

类的组成

数据域、构造函数、方法(C++里面的说法是数据成员和成员函数) 类中不能存在可执行语句

面向对象 - 图4

构造函数

  • 和类同名、重载、没有返回值

面向对象 - 图5

  • 构造函数初始化优先级
    1. 静态成员变量初始化顺序高于非静态成员变量
    2. 成员变量的初始化顺序优于构造函数
    3. 静态成员变量只初始化一次,就是第一次被访问的时候
    4. 存在多个静态成员变量的时候,按照次序依次执行

面向对象 - 图6

  1. Window(2)
  2. Window(1)
  3. Window(2)
  4. Window(3)
  5. House()
  6. Window(33)
  7. f()

数据域的默认值

对于对象而言,不赋值也会有默认的。之前的数组就是如此

各个数据域按照之前的基本上的默认初值,如果是其他的类型,则空

对象的创建和访问

  1. 通过引用变量来访问对象,创建的类的对象被内存分配了内存空间,可以用引用变量来访问
  2. 对象类型都需要用new来新建
  1. ClassName objectRefVar = new ClassName();
  2. Circle myCircle = new Circle();

使用成员变量和成员函数

  1. mycircle.radius
  2. mycircle.getArea()

调用静态函数,动态函数需要在自己类下面调用自己的函数

“炸宿舍”

关于老师提出来的炸宿舍例子

对象间的赋值和基本类型的赋值,能改变的一定是基本数值类型,所谓的数组名抑或是对象名,都只是地址映射

垃圾回收机制和this

  1. System.gc(); // 提醒垃圾回收

image.png

静态变量、常量和方法

静态成员变量:静态成员变量可以被类的所有实例共享(比如计数变量用到) 静态方法:不能访问类的实例成员 关于静态变量、静态方法、实例变量、实例方法

可见性修饰符

面向对象 - 图8

“析构函数”

  1. protected void finalize() throwsable {
  2. super.finalize();
  3. System.out.println("Person - finalize");
  4. }

内部类

内部类只给该类使用(私有自己用,同时写静态的),就如LinkedList类的设计