面向对象

对象在内存中的运行机制

多个对象的内存图


对象到底放在哪个位置

  • 堆内存中

Car c = new Car(); c变量名中存储的是什么?

  • 存储的是对象在堆内存中的地址

成员变量(name、price)的数据放在哪里,存在于哪个位置?

  • 对象中,存在于堆内存中

两个变量指向同一个对象内存图

垃圾回收

  • 注意:当堆内存中的对象,没有被任何变量引用(指向)的时候,就会被判定为内存中的“垃圾”

构造器

构造器的作用

  • 定义在类中,可以用于初始化一个类的对象,并返回对象的地址

构造器的分类和作用

  • 无参构造器(默认存在的):初始化对象时,成员变量的数据均采用默认值
  • 有参构造器:在初始化对象时,同时可以接收参数为对象进行赋值

构造器的注意事项

  • 任何类定义出来,默认就带了无参构造器,写不写都有
  • 一旦定义了有参构造器,那么无参构造器就没有了,如果还想要无参构造器,此时就需要自己手写一个无参构造器

this关键字

this关键字是什么

  • 可以出现在构造器、方法中
  • 代表当前对象的地址

this关键字的作用

  • 可以用于指定访问当前对象的成员变量、成员方法

封装

什么是封装?

  • 告诉我们如何正确的设计对象的属性和方法
  • 原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

如何进行封装更好?

  • 一般建议对象成员使用private(私有)关键字修饰(private修饰的成员只能在当前类中访问)。
  • 为每个成员变量提供配套的public修饰的getter和setter方法暴露其取值和赋值