Java 基础入门篇(五):面向对象编程

旧城等待, 2023-10-11 21:52 129阅读 0赞

文章目录

  • 一、面向对象的思想
  • 二、类的定义与对象的创建
  • 三、对象内存分配情况 ★
    • 3.1 两个对象的内存图
    • 3.2 两个变量指向同一个对象内存图
  • 四、构造器
    • 4.1 构造器的格式与分类
    • 4.2 构造器的调用
  • 五、 this 关键字
  • 六、封装
  • 七、标准JavaBean
  • 补充:局部变量和成员变量的区别

一、面向对象的思想

  面向对象: 把现实世界中的事物全部看成一个个的对象来解决问题的,即万物皆对象。面向对象编程,即使用对象中的方法来解决问题。其好处在于,代码符合人类的思维习惯,编程程序更简单,看程序更容易理解吧。

类(设计图): 相同事物共同特征的描述;对象(实例):对象是类的具体的实例。在 Java 中必须先定义类,才能得到对象。


二、类的定义与对象的创建

类中包含五种成分:成员变量、成员方法、构造器、代码块、内部类。类的定义格式如下:

在这里插入图片描述

成员变量的完整格式:修饰符 数据类型 变量名称 = 初始化值,一般无需为成员变量指定初始化值,存在默认值。默认值参考:

在这里插入图片描述

注意事项:

① 类名首字母建议大写,有意义且要满足驼峰。不要用关键字,要使用合法的标志符。
② 一个 Java 文件中可以定义多个类,但是只能一个类是 public 修饰的,而且 public 修饰的类名必须成为 Java 代码的文件名称,否则报错!

对象的创建: 类名 对象名 = new 构造器();
对象的使用:对象名.成员变量;对象名.成员方法


三、对象内存分配情况 ★

对象是引用类型,创建后会在堆内存中进行存储,栈内存存储引用地址。

Java 的内存分配参考:Java基础入门篇(三)—— 数组的定义与内存原理

3.1 两个对象的内存图

在这里插入图片描述


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

在这里插入图片描述

注意: 当堆内存中的对象,没有被任何变量引用(指向)时,就会被判定为内存中的垃圾。Java存在自动垃圾回收器,会定期进行清理。


四、构造器

构造器用于初始化一个类的对象,并返回这个对象的地址。

4.1 构造器的格式与分类

在这里插入图片描述

无参数构造器: 初始化一个类的对象,并返回这个对象的地址,里面的数据都是默认值。
有参数构造器: 初始化一个类的对象,并返回这个对象的地址,并且可以同时为对象赋值。

  1. public class Car {
  2. private String name;
  3. private Double price;
  4. ...
  5. //无参数构造器
  6. public Car(){
  7. ...
  8. }
  9. //有参数构造器
  10. public Car(String name, Double price)(){
  11. ...
  12. }
  13. }

4.2 构造器的调用

在这里插入图片描述

如:

  1. Car c = new Car(); // 无参构造
  2. Car c1 = new Car("奔驰", 39); // 有参构造

注意事项:

① 任何类写出来自带一个无参数构造器,写不写都有;
② 如果定义了一个有参数构造器了,那么无参数构造器就消失了。此时,如果需要使用无参数构造器,必须自己写。


五、 this 关键字

this 代表了当前对象的地址,出现在有参构造函数和成员方法中,可以访问当前对象的成员变量和成员方法。如:

  1. // 有参构造
  2. public Car(String name, double price){
  3. // 注意:this在构造器中,代表构造器正在初始化的那个对象。
  4. System.out.println(this);
  5. this.name = name;
  6. this.price = price;
  7. }
  8. // 成员方法
  9. public void goWith(String name){
  10. // 注意:this 代表当前访问该方法的对象
  11. System.out.println(this.name + "正在和" + name + "比赛");
  12. this.play();
  13. }

六、封装

面向对象的三大特征:封装、继承、多态。

封装的基本思想: 决定属性和行为归属谁的问题。

如:定义人类(名称,年龄,吃饭、睡觉)、定义圆类(半径,画圆)、定义门类(开门,高宽)…

如何更好的封装呢? 成员变量建议 private 私有化,只能本类访问了。
合理暴露:提供成套的 getter 和 setter 方法暴露取值和赋值。

  1. public class Car {
  2. private String name;
  3. private Double price;
  4. public Car(){
  5. // 默认有无参构造函数
  6. }
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public Double getPrice() {
  14. return price;
  15. }
  16. public void setPrice(Double price) {
  17. this.price = price;
  18. }
  19. }

七、标准JavaBean

JavaBean 就是所谓的实体类(学生类,老师类,汽车类,票类,人类)

作用:创建对象,封装数据的。

标准Bean的书写要求:

① 成员变量建议 private 私有化,只能本类访问了。
② 合理暴露,提供成套的 getter 和 setter 方法暴露取值和赋值。
③ 必须提供无参数构造器;有参数构造器是可写可不写的。


补充:局部变量和成员变量的区别

在这里插入图片描述


文章参考:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

发表评论

表情:
评论列表 (有 0 条评论,129人围观)

还没有评论,来说两句吧...

相关阅读