【自学笔记】01Java基础-07面向对象基础-01封装

记录学习Java基础中有关面向对象编程的基础知识,包括面向对象思想,构造方法,封装思想,JavaBean。

1 面向对象概述

1.1 什么是面向对象编程

严谨来说
  面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式或编程方法论,它基于“对象”这一核心概念来组织和管理计算机程序的结构。在OOP中,数据和处理这些数据的方法被捆绑在一起,形成了一个称为“对象”的自包含单元。对象是对现实世界实体的一种抽象模拟,它们拥有状态(属性或变量)和行为(方法或函数),通过封装、继承和多态等机制来实现复用、模块化以及灵活的设计。
简单来说:
  对象就是名词,如动物植物,猫狗…面向对象编程,就是拿这些对象进行代码设计。

1.2 什么是类

  类是对象共同特征的描述。对象是类的具体实例。
例如“动物类”下的猫对象,狗对象;也可以是“猫类”下的狸猫对象,橘猫对象;

1.3 如何设计类

  Java中,必须先设计类,才能创建其实例对象
在这里插入图片描述
在这里插入图片描述

1.4 类声明注意事项

在这里插入图片描述

2 构造方法(构造器)

2.1 什么是构造方法(构造器)

  构造方法(Constructor)是面向对象编程语言中的一个特殊成员函数,它与类同名,用于初始化新创建的对象实例的状态。当使用new关键字创建类的一个实例时,构造方法会被自动调用。
  简单来说,构造方法即创建对象的方法
在这里插入图片描述
在这里插入图片描述

2.2 构造方法有什么特点

  1. 构造方法的名称必须与类名完全相同。
  2. 构造方法没有返回类型,包括void类型也不可以声明。
  3. 当创建一个类的新实例时,构造方法会被隐式调用,程序员不能直接调用构造方法。
  4. 如果不显式定义构造方法,编译器会为该类提供一个默认构造方法,这个默认构造方法不带任何参数且不执行任何操作(如果类中没有其他构造方法的话)。
  5. 构造方法可以重载,即在同一个类中可以有多个构造方法,它们之间通过参数列表的不同来区分。

2.3 构造方法的注意事项

在这里插入图片描述

2.4 this关键字

  this,指当前对象的地址

在这里插入图片描述
在这里插入图片描述
在上图代码中,当调用Car()或goWith()方法并传入一个字符串参数时,this.name用于区分成员变量 name和方法参数 name,避免了 同名冲突

3 封装

  面向对象的三大特征:封装,继承,多态
  封装:告诉我们,如何正确设计对象的属性和方法

3.1 什么是封装?

官方回答,理解即可:封装是面向对象编程(OOP)的三大基本特性之一,另外两个是继承和多态。封装的思想主要体现在以下几个方面:

  1. 数据隐藏:封装的核心概念是将对象的状态(属性或数据成员)与操作这些状态的方法(成员函数或方法)结合在一起,并且对外部世界隐藏其内部实现细节。通过设置访问修饰符如private、protected或public,可以控制哪些成员变量能被外部直接访问,哪些不能。

  2. 信息抽象:封装有助于创建一个独立、可复用并且易于理解的组件,该组件提供了一组有限的接口(即公开的方法),用户只需要知道如何使用这些接口,而无需了解它们的具体实现机制。

  3. 提高安全性:通过限制对内部数据的访问,可以防止意外修改或错误地操作数据,从而提高了程序的安全性和稳定性。

  4. 简化设计和维护:由于内部实现的变化不影响到外部调用者,因此在后续的设计和维护阶段,开发者可以在不改变接口的前提下自由修改类的内部实现逻辑。

简单来说,封装就是将相关的数据和行为组合在一起,形成一个统一的、受保护的整体,外部代码只能通过预定义的接口来访问和操作这个整体,而不能直接干预其内部结构和实现细节。
在这里插入图片描述

3.2 如何进行更好的封装?

在这里插入图片描述
在这里插入图片描述

4 JavaBean(重要)

  JavaBean也称为实体类,其对象可以用于在程序中封装数据。
  标准的JavaBean必须满足以下要求:

   1. 成员变量使用 private 修饰。
   2. 提供成员变量对应的 setXxx() / getXxx()方法。
   3. 必须提供一个无参构造器;有参数构造器是可写可不写的。

4.1 一个JavaBean类示例

一个符合JavaBean规范的Student实体类标准示例:

public class Student{
    // 私有成员变量,遵循驼峰命名法(首字母小写,后续单词首字母大写)
    private String studentName;
    // 默认构造器(无参数)
    public Student() {
        // 可以为空,可以初始化默认值或进行其他操作
    }
    // 带参数的构造器,用于实例化时直接设置属性值
    public Student(String name, int age) {
        this.studentName = name;
    }
    
    // Getter方法
    public String getStudentName() {
        return studentName;
    }
    // Setter方法
    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }
}

在上述Student类中:

  • 类是公共的(public),具有可访问性。
  • 包含私有成员变量(private)。
  • 提供了与每个私有成员变量对应的公共getter和setter方法。
  • 有一个默认的无参数构造器。

5 成员变量和局部变量的区别

在这里插入图片描述

6 面向对象实践案例

在这里插入图片描述
在这里插入图片描述

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值