【Java基础05】面向对象01

article/2025/6/25 7:25:10

文章目录

  • 1. 设计对象并使用
    • 1.1 类与对象
    • 1.2 封装
      • 1.2.1 private关键字
      • 1.2.2 this关键字
        • 成员变量和局部变量的区别
      • 1.2.3 构造方法
      • 1.2.4 标准JavaBean类
    • 1.3 对象内存图

本文部分参考这篇博客

1. 设计对象并使用

1.1 类与对象

在这里插入图片描述

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

public class 类名{1、成员变量(代表属性,一般是名词)2、成员方法(代表行为,一般是动词)3、构造器:	(后面学习) 4、代码块	(后面学习)5、内部类	(后面学习)
}
public class Phone {//属性String brand;double price;//行为public void call(){System.out.println("手机打电话");}public void playGame(){System.out.println("玩游戏");}
}
  • 创建对象的格式:
    • 类名 对象名 = new 类名();
  • 调用成员的格式:
    • 对象名.成员变量
    • 对象名.成员方法();
public class Main {public static void main(String[] args) {Phone P = new Phone();   P.brand = "iphone";P.price = 9999.99;System.out.println(P.brand);System.out.println(P.price);P.call();P.playGame();}
}

注意事项:
Javabean类(就是描述事物的类),不需要写main方法。
编写main方法的类,叫测试类
一个文件其实可以有多个类,不过只能有一个public类,文件名要和public类一致,不过实际开发中还是一个文件定义一个class类比较好。

定义成员变量可以初始化,也可以不初始化,有默认值:
基本类型:0/0.0/flase
引用类型(类、数组、接口、String):null

1.2 封装

面向对象三大特征:封装、继承、多态
对象代表什么,就得封装对应的数据,并提供数据对应的行为

注意:谁的行为就设计谁的方法与属性在这里插入图片描述

封装的目的是将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。比如成员变量private,提供对应的getXxx()/setXxx()方法。

封装的好处:

  • 对象代表什么,就得封装对应的数据,并提供数据对应的行为
  • 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行

1.2.1 private关键字

private是一个权限修饰符,可以修饰成员 (成员变量和成员方法),被private修饰 的成员只能在本类中才能访问。

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:

  • 提供“setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰。
  • 提供“getXxx()"方法,用于获取成员变量的值,方法用public修饰

在这里插入图片描述

1.2.2 this关键字

(1)this修饰的变量用于指代成员变量,其主要作用是区分局部变量和成员变量的重名问题。

方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量(而且会就近原则,形参离它更近,会调用形参而不是成员变量)。
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。

(2)this代表所在类的对象。方法被哪个对象调用,this就代表哪个对象
在这里插入图片描述

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

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

1.2.3 构造方法

构造方法也叫作构造器、构造函数。

  • 作用:创建对象的时候给成员变量进行初始化。
  • 在这里插入图片描述
public class 类名{修饰符 类名(参数){}
}class Student {private String name;private int age;//构造方法public Student() {System.out.println("无参构造方法");}public void show() {System.out.println(name + "," + age);}
}
/*测试类*/
public class StudentDemo {public static void main(String[] args) {//创建对象Student s = new Student();s.show();}
}

在这里插入图片描述

注意事项:

  • 构造方法的创建
    如果没有定义构造方法,系统将给出一个默认的无参数构造方法
    如果定义了构造方法,系统将不再提供默认的构造方法

  • 构造方法的重载
    如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法

  • 推荐的使用方式
    无论是否使用,都手工书写无参数构造方法

1.2.4 标准JavaBean类

① 类名需要见名知意

② 成员变量:private修饰

③构造方法:提供至少两个

  • 无参构造方法
  • 带全部参数的构造方法

④ 成员方法:

  • 提供每一个成员变量对应的setXxx()/getXxx()
  • 提供一个显示对象信息的show()

⑤ 如果还有其他行为,也需要写上

  • 示例代码:
class Student {//成员变量private String name;private int age;//构造方法public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}//成员方法public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}public void show() {System.out.println(name + "," + age);}
}
/*创建对象并为其成员变量赋值的两种方式1:无参构造方法创建对象后使用setXxx()赋值2:使用带参构造方法直接创建带有属性值的对象
*/
public class StudentDemo {public static void main(String[] args) {//无参构造方法创建对象后使用setXxx()赋值Student s1 = new Student();s1.setName("林青霞");s1.setAge(30);s1.show();//使用带参构造方法直接创建带有属性值的对象Student s2 = new Student("林青霞",30);s2.show();}
}

1.3 对象内存图

见视频


http://www.hkcw.cn/article/cBdNFfJWxZ.shtml

相关文章

C58-字符串拼接函数strcat

一 C语言 strcat 函数简明总结 功能 将 src 字符串拼接到 dest 字符串末尾(覆盖 dest 的 \0,并在新末尾补 \0)。 原型 char *strcat(char *dest, const char *src);要点 目标空间必须足够大,否则导致缓冲区溢出(未…

G25-05-31Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2025-05-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10TypeScript项目1Pake: 利用 Rust 轻松构建轻量级多端桌面应用 创建周期:491 天开发语言:Rust协议类型:MIT LicenseStar数量:2095…

火语言UI组件--JSON

【组件功能】:格式化显示json数据。 样式预览 设置 基础设置 属性名称属性释义输入值类型主题样式(theme)设置主题样式(默认 / 暗黑)字符串类型,可选值(dark / light ) 样式设置 属性名称属性释义输入值类型字体大小(fontSize…

Redis 持久化机制详解:RDB 与 AOF 的原理、优缺点与最佳实践

目录 前言1. Redis 持久化机制概述2. RDB 持久化机制详解2.1 RDB 的工作原理2.2 RDB 的优点2.3 RDB 的缺点 3. AOF 持久化机制详解3.1 AOF 的工作原理3.2 AOF 的优点3.3 AOF 的缺点 4. RDB 与 AOF 的对比分析5. 持久化机制的组合使用与最佳实践6. 结语 前言 Redis 作为一款高性…

设计模式——抽象工厂设计模式(创建型)

摘要 抽象工厂设计模式是一种创建型设计模式,旨在提供一个接口,用于创建一系列相关或依赖的对象,无需指定具体类。它通过抽象工厂、具体工厂、抽象产品和具体产品等组件构建,相比工厂方法模式,能创建一个产品族。该模…

建造者模式:优雅构建复杂对象

引言 在软件开发中,有时我们需要创建一个由多个部分组成的复杂对象,这些部分可能有不同的变体或配置。如果直接在一个构造函数中设置所有参数,代码会变得难以阅读和维护。当对象构建过程复杂,且需要多个步骤时,我们可…

JWT 原理与设计上的缺陷及利用

JWT 原理与设计上的缺陷及利用 基本概念 JSON Web Token (JWT)是一个开放标准 ( RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象的形式安全传输信息。此信息可以验证和信任,因为它是数字签名的。JWT可以使用密钥&…

Jmeter requests

1.Jemter元件和组件 1.1 元件和组件的概念 元件:多个功能相似的的组件的容器,类似于一个工具箱。 组件:实现某个特定功能的实例,类似于工具箱中的螺丝刀,十字扳手... 1.2 作用域和执行顺序 1.2.1 作用域 例子&#…

力扣HOT100之动态规划:300. 最长递增子序列

这道题之前刷代码随想录的时候也刷过,现在又给忘完了。自己尝试着写了一下,发现怎么写都写不对,直接去看视频了。。我自己写的时候的定义是:考虑下标0 ~ i范围内索赔能取到的最长严格递增子序列的长度,后面发现在写递推…

姜老师MBTI课程:ISTP和ISFP

文稿: 今天我们讲两个非常奇怪的人格特质组合。就是如果他又内向又严谨,他还可能P吗?可能愿意去接受风险,去尝鲜探索未知吗?对,咱们今天就讲的是ISP。 首先我们来看ISTP,一个人很内向&#xf…

Cursor奇技淫巧篇(经常更新ing)

Dot files protection :Cursor当开启了Agent模式之后可以自动帮我们写文件,但是一般项目中的一些配置文件(通常以.开头的)都是非常重要性,为了防止Cursor在运行的过程中自己修改这些文件,导致风险&#xff…

现代数据湖架构全景解析:存储、表格式、计算引擎与元数据服务的协同生态

本文全面剖析现代数据湖架构的核心组件,深入探讨对象存储(OSS/S3)、表格式(Iceberg/Hudi/Delta Lake)、计算引擎(Spark/Flink/Presto)及元数据服务(HMS/Amoro)的协作关系,并提供企业级选型指南。 一、数据湖架构演进与核心价值 数据湖架构演进历程 现代数据湖核心价…

Python训练营打卡Day41(2025.5.31)

知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch归一化层…

MySQL--day10--数据处理之增删改

(以下内容全部来自上述课程) 增删改 0. 储备工作 #0.储备工作 USE atguigudb; CREATE TABLE IF NOT EXISTS emp1( id INT, name VARCHAR(15), hire_date DATE, salary DOUBLE(10,2) );1. 插入数据 1.1 一条一条添加 # (1)…

新版智慧景区信息化系统解决方案

该智慧景区信息化系统解决方案以云 + 大数据 + 物联网技术为核心,秉持 “汇聚联合,突显数据隐性价值” 理念,通过数据融合、业务融合、技术融合,构建 “营销、服务、管理” 三位一体模式。方案涵盖智慧票务、智能入园、精准营销、景区管理(如用电安全监测、森林防火、客流…

VAE在扩散模型中的技术实现与应用

VAE在扩散模型中的技术实现与应用 技术概述 在生成式AI领域,VAE(变分自编码器)与扩散模型的结合代表了当前最先进的技术方向之一。这种结合不仅解决了扩散模型在处理高维数据时的效率问题,还提供了更稳定的训练过程和更好的生成质…

C#中实现两个对象部分相同属性值的复制

在C#中实现两个对象部分相同属性值的复制,可通过以下方案实现: 一、手动赋值(基础方案) 直接通过属性名逐个赋值,适用于属性较少且明确的情况: // 示例类定义 public class Source { public int Id …

SOC-ESP32S3部分:22-分区表

飞书文档https://x509p6c8to.feishu.cn/wiki/F9PdwnOKhiTRDWk4cr1cIZsvneh 无论是前面我们说到的NVS,还是后面用到的文件系统,他们都必须有存储的载体,例如NVS,我们说过它是存储在Flash中的,那具体是Flash的哪个位置呢…

华为OD机试真题——找出两个整数数组中同时出现的整数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《找出两个整数数组中同时出…

KWIC—Implicit Invocation

KWIC—Implicit Invocation ✏️ KWIC—Implicit Invocation 文章目录 KWIC—Implicit Invocation📝KWIC—Implicit Invocation🧩KWIC🧩核心组件🧩ImplementationScheme⚖️ 隐式调用 vs 显式调用对比 🌟 总结 &#x…