part07——面向对象基础

YangeIT大约 14 分钟Java基础入门if面向对象面向过程构造方法getset方法JavaBean实体类toString()

part07——面向对象基础

知识储备

  1. 变量、数组、运算符、流程控制、方法的定义和基本语法
  2. 上述知识的基本应用

在线测试知识储备open in new window 👈

如果你能得70分,你就很不错哦!🎉,如果不到70分,可以多做几遍,每次做完有答案解析哦。 并且将part6的练习题敲过5个以上,说明Java的基础语法就全掌握了。

接下来,要学习的是Java中最核心的课程——面向对象编程

  • 面向对象概述 🍐
  • 类和对象的关系 🍐
  • 类的定义和对象的创建 🍐
  • 对象内存图 🍐
  • 成员变量和局部变量 🍐
  • 封装 🍐
  • this 🍐
  • 构造方法 🍐

1. 面向对象概述 🍐

面向对象

今天我们要探讨一个计算机编程中非常重要的概念——面向对象。在开始之前,让我们先回顾一下另一个编程方式——面向过程。

所谓面向过程,就像在按照一系列步骤做事情。

image面向过程按照步骤和流程来组织代码的,逻辑上是线性的,一步接一步。

面向对象则是一种不同的思维方式。它关注的是事物本身,强调对象之间的交互

总结

上述的2种方式看起来似乎没有太大的区别,但是在更复杂的程序中,面向对象的方式可以更好地组织和管理代码。 为什么呢?

  • 首先,可重用性。面向对象允许我们创建可以在不同地方多次使用的代码。
  • 其次,维护性。如果我们需要改变装洗衣服的方法,只需要在女优对象中进行修改,而不用关心其他地方。
  • 最后,可扩展性。我们可以轻松地添加新的对象和方法,而不破坏原有的代码。

所以,为什么要学习面向对象呢?

面向对象的开发更符合人类的思维习惯,能够让我们写出更清晰、更易读、更易维护的代码。在实际开发中,很多大型项目都采用面向对象的方式,这将是你未来学习和工作中必不可少的一部分。

总结

课堂作业

  1. 是一种以过程为中心的编程套路,这种方式是按照步骤和流程来组织代码的,逻辑上是线性的,一步接一步
  2. 面向对象则是一种以对象为中心的编程套路,通过指挥对象实现具体的功能。它关注的是事物本身,强调对象之间的交互
  3. 为什么要学习面向对象呢? 🎤

面向对象的开发更符合人类的思维习惯,能够让我们写出更清晰、更易读、更易维护的代码。在实际开发中,很多大型项目都采用面向对象的方式,这将是你未来学习和工作中必不可少的一部分。

2. 类和对象的关系 🍐

类和对象的关系

在编程世界中,类和对象是面向对象编程(OOP)中的两个基本概念。它们提供了一种组织和结构化代码的方式,使我们能够更容易地理解和管理复杂的程序。

image
image

什么是类?

是对现实生活中一类具有共同属性和行为的事物的抽象

是对事物,也就是对象的一种描述,可以将类理解为一张设计图(模板、模具等)

image
image

根据设计图(模板、模具等),可以创建出具体存在的事物 (对象)

组成结构: 一个类通常包括两个主要组成部分

  • 属性(成员变量): 描述类的特征或状态 如Elephant大象属性:颜色、体重、年龄、品种等
  • 行为(成员方法): 定义类的行为或功能,如Elephant大象属性:吃草、睡觉、交配等

举例: 在我们的例子中,Elephant大象 和 Fridge 冰箱 分别就是类的例子。

// 以大象为例的类定义
public class Elephant {
    // 属性
    String color;
    int weight;

    // 方法
    void lift() {
        // 实现抬起大象的功能
    }

    void putInFridge() {
        // 实现将大象放进冰箱的功能
    }
}

什么是对象?

定义: 对象是类的一个实例,是类的具体体现。可以看作是类的一个具体个体。

关键特性: 对象具有唯一的标识、状态和行为。

举例: 在我们的例子中,myElephant 和 myFridge 就是对象的例子。


// 创建大象和冰箱的对象
Elephant myElephant = new Elephant();
Fridge myFridge = new Fridge();

类和对象的关系

类:类是对现实生活中一类具有共同属性和行为的事物的抽象

对象:是能够看得到摸的着的真实存在的实体

image
image

代码操作

类的定义:

什么是类: 类是一种抽象的模板,用于描述一类具有相似属性和行为的对象。

组成结构: 一个类通常由属性(成员变量)和 行为(成员方法)组成。

关键词: 类的定义使用关键词 class。

语法结构:image

案例



// 以用户类为例的类定义
public class User {
    // 属性
    String name;
    int age;

    // 方法
    void displayInfo() {
        // 实现显示用户信息的功能
    }
}

总结

课堂作业

1.下面图片中1,2,3序号,哪些可以表示类,哪些可以表示对象(实例) image

  1. 完成下面案例的定义🎤

需求1: 创建学生对象,通过学生对象使用 变量 和 方法

分析:

  • 要创建学生对象,得先定义一个学生模板类
  • 成员变量:姓名,年龄…
  • 成员方法:学习…

需求2:创建手机对象,通过手机对象使用 变量 和 方法

分析:

  • 要创建手机对象,首先得定义一个手机的模板类
  • 成员变量:品牌,价格…
  • 成员方法:打电话,发短信…

需求3:设计笔记本对象

  • 让学生设计一个笔记本对象,该对象应该有哪些属性和方法?

分析:

属性可以包括品牌、型号、颜色、硬盘大小、内存大小等,方法可以包括编程、看片、浏览网页等。

善用Idea中的翻译插件image!!😊

通过这三个练习,学生可以深入理解对象的概念,思考对象的组成以及如何在程序中创建和使用对象。这样的互动能够帮助他们更好地理解抽象的概念,并提高实际编程的能力。

3. 对象内存图 🍐

image
image
  1. 一个类的class文件只会加载一次,和创建几个对象没有任何关系
  2. 注意:当堆内存中,对象或数组产生的地址,通过任何方式都不能被找到后,就会被判定为内存中的垃圾 ,垃圾会被Java垃圾回收器,空闲的时候自动进行清理

4. 成员变量和局部变量 🍐

成员变量和局部变量区别

成员变量和局部变量定义

image
image

成员变量和局部变量区别

image
image

总结

课堂作业

  1. 成员变量和局部变量的区别🎤
  2. 定义一个类,描述汽车,在类中定义成员变量name ,在定义一个run的方法,在run方法中定义一个局部变量 speed 时速,并输出“比亚迪正在以110km/h时速行驶!”

5. 封装 🍐

封装

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

所谓封装,就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理数据的方法,都设计到一个对象中去。

比如:在设计学生类时,把学生对象的姓名、语文成绩、数学成绩三个属性,以及求学生总分、平均分的方法,都封装到学生对象中来。

1662305928023
1662305928023

总结

课堂作业

  1. 封装的设计规范是什么?🎤
  2. 为什么要合理隐藏?🎤

6. this 🍐

this

在面向对象编程中,this 是一个重要的关键字,用于指代当前对象的引用。它主要用于解决对象成员变量与方法内部变量命名冲突的问题。

什么是this关键字:

定义: this 是一个变量,代表当前对象的引用。

作用范围: 主要用在类的方法中。

指向当前对象: 当对象调用方法时,this 就指向调用该方法的对象。

public class MyClass {
    int myVariable;

    void myMethod(int myVariable) {
        // 在这里,this.myVariable 指的是对象的成员变量,而 myVariable 指的是方法的参数
        this.myVariable = myVariable;
    }
}

总结

this关键字是一个用于指代当前对象的引用,主要用于解决成员变量与方法内部变量命名冲突的问题。在实际开发中,合理使用this可以提高代码的可维护性和可读性。

应用场景:

  • 明确使用场景: 仅在需要区分成员变量和方法内部变量时使用this关键字。
  • 代码可读性: 适当使用this可以增加代码的可读性,避免混淆。

7. 构造方法 🍐

构造方法

构造方法的定义:

构造方法是一种特殊的方法,用于在创建对象时进行初始化。构造方法的名称与类名相同,没有返回类型,并在 new 关键字后调用。


public class Student {
    private String name;private int age;
// 构造方法
    public Student(String studentName, int studentAge) {
        name = studentName;
        age = studentAge;
    }
// 其他成员方法...
}

上面的例子中,Student 类定义了一个构造方法,接受学生的姓名和年龄,并在创建对象时进行初始化。

构造方法的特点:

  1. 与类同名: 构造方法的名称必须与类名相同。
  2. 没有返回类型: 构造方法没有返回类型,即使是 void 也不需要声明。
  3. 可以有参数: 构造方法可以接受参数,用于初始化对象的属性。
  4. 可以重载: 可以定义多个构造方法,以满足不同的初始化需求。

构造方法的应用场景:

  • 初始化对象的属性: 构造方法通常用于初始化对象的属性,确保对象在创建时就具有合适的状态。

总结

课堂作业

  1. 随便定义2个变量,然后使用idea工具,生成无参,一个参数,全参数的构造方法🎤

8. 面向对象编程综合案例 ✏️ ❤️

面向对象编程综合案例

标准模板类制作

  1. 成员变量

    • 使用private修饰
  2. 构造方法

    • 提供一个无参构造方法
    • 提供一个带多个参数的构造方法
  3. 成员方法

    • 提供每一个成员变量对应的setXxx()/getXxx()
    • 提供一个显示对象信息的show()
  4. 创建对象并为其成员变量赋值的两种方式

    • 无参构造方法创建对象后使用setXxx()赋值
    • 使用带参构造方法直接创建带有属性值的对象

例如:

public class Car {
    //成员变量
    private  String carName;
    private  String  color;
    //无参构造方法
    public Car() { }
    //多个参数的构造方法
    public Car(String carName, String color) {
        this.carName = carName;
        this.color = color;
    }
    //成员方法
    public void show(){ }

    //获取成员变量carName值的方法
    public String getCarName() { return carName; }
    //设置成员变量carName值的方法
    public void setCarName(String carName) { this.carName = carName; }

    //获取成员变量color值的方法
    public String getColor() { return color; }
    //设置成员变量color值的方法
    public void setColor(String color) { this.color = color; }
}

需求

image
image