【Java SE 】类和对象详解

 🔥博客主页🔥:【 坊钰_CSDN博客 】

欢迎各位点赞👍评论✍收藏⭐

目录

1, 面向对象认识

1.1 什么时面向对象

1.2 面向对象和面向过程

1.2.1 一个例子理解对象和过程

1. 对于电脑来说

2. 对于我们人来说

 2. 类的定义和使用

2.1 简单认识类

2.2 类定义的格式

3. 类的实例化 

4. this 引用

5. 对象的构造和初始化

5.1 构造方法

5.2 构造方法重载

5.3 this 调用构造器

6. 默认初始化

7. 小结


 

1, 面向对象认识

1.1 什么时面向对象

Java 可以说是一门纯面向对象的编程语言(简称 OOP),面向对象是一种思路,依靠对象间的交互来完成一件事情。

1.2 面向对象和面向过程

像 C语言 就是一门面向过程的语言,没有那么抽象,而 Java 则与之相比抽象很多

1.2.1 一个例子理解对象和过程

  • 电脑开机 
1. 对于电脑来说

 电脑内部执行很多步骤------------------> 这就叫面向过程

2. 对于我们人来说

 我们只需要简单几步就完成了-----------------------------> 这就叫面向对象

 2. 类的定义和使用

2.1 简单认识类

类就是用来对一个对象进行描述的,主要描述对象有哪些属性,那些功能

如:电脑

属性:品牌、尺寸、颜色......

功能:看视频、打游戏......

那么,我们该如何定义类呢?

2.2 类定义的格式

Java 中定义类要用到 class 关键字

class ClassName {   //类名称nature;  //属性method   //方法、功能
}

用代码定义电脑类

public class Computer {public String color;  //颜色public int size;      //尺寸public String function;     //性能public void watchVideo() {System.out.println("看动画片");}public void playGame() {System.out.println("打游戏");}}

这样一个简单的电脑类就定义好了

注意事项

  • 类名采用大驼峰命名法
  • 属性前用 public 修饰,后续会讲
  • 成员方法前不带 static 修饰,后续会讲

3. 类的实例化 

那我们定义了一个类后,该如何使用它呢?

这时就要用到类的实例化了,在 Java 中用 new 关键字来进行实例化

//用电脑类来示范
Computer computer = new Computer();
public class Computer {String color;  //颜色int size;      //尺寸String function;     //性能public void watchVideo() {System.out.println("看动画片");}public void playGame() {System.out.println("打游戏");}public static void main(String[] args) {Computer computer = new Computer();computer.watchVideo();computer.playGame();}}

注意事项

  • 用 new 关键字创造一个对象的实例
  • 使用 . 来访问对象中的属性和方法
  • 一个类可创建多个实例对象 

4. this 引用

 this 是指向当前对象,可通过 this 来访问类中的成员属性,成员方法

我们创建一个时间的类

public class Day {public int year;public int month;public int day;public void setDay(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}public void dayPrint(){System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");}public static void main(String[] args) {Day day1 = new Day();day1.setDay(2024,10,17);day1.dayPrint();}}

当形参的名字和成员属性的名字一样时,用 this 关键字可以指定当前类的成员属性,避免和形参搞混淆

注意事项

  • 那个对象调用,this 就是那个对象的引用类型
  • this 只能在成员方法发中使用,且只能引用当前对象,不能引用其他对象
  • this 是成员方法(除去静态方法)的第一个隐藏的参数,所以才能使用本类的属性和方法

5. 对象的构造和初始化

5.1 构造方法

构造方法可以给成员属性直接初始化

public class Day {public int year;public int month;public int day;public Day(int year, int month, int day) {    //构造方法 或叫 构造器this.year = year;this.month = month;this.day = day;}public void dayPrint(){System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");}public static void main(String[] args) {Day day1 = new Day(2024,10,17); // 直接就地初始化}}

注意事项

  • 构造方法必须和类名一样
  • 构造方法没有返回值,也不能有 void 
  • 如果不写构造方法,编译器会自动添加一个无参的构造方法
public class Day {public int year;public int month;public int day;//不写构造方法,编译器会自动添加//public Day(){}     编译器自动添加的public void dayPrint(){System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");}public static void main(String[] args) {Day day1 = new Day(); // 编译器自动添加无参构造器,所以这里不会报错}}
  •  但是,如果写了有参数的构造器,无参构造器则不会添加

5.2 构造方法重载

public class Day {public int year;public int month;public int day;public Day(int year, int month, int day) {    //构造方法 或叫 构造器this.year = year;this.month = month;this.day = day;}public Day(int month, int day) {this.month = month;this.day = day;}public void dayPrint(){System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");}public static void main(String[] args) {Day day1 = new Day(2024,10,17); // 直接就地初始化Day day2 = new Day(10,17); // 直接就地初始化}}
  •  有多个标签(参数列表)不同的构造方法,就构成了构造方法的重载

5.3 this 调用构造器

 this 关键字除了,调用成员属性和方法外,还可以调用构造方法

public class Day {public int year;public int month;public int day;public Day() {this(2024,10,17);  //必须放在第一行,否则会报错}public Day(int year, int month, int day) {    //构造方法 或叫 构造器this.year = year;this.month = month;this.day = day;}public void dayPrint(){System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");}public static void main(String[] args) {Day day1 = new Day(2024,10,17); // 直接就地初始化Day day2 = new Day(); // 直接就地初始化}}

注意事项

  • this 关键字调用构造方法时,代码必须放在第一行
  • 不能形成环(互相调用)
public class Day {public int year;public int month;public int day;public Day() {this(2024,10,17);  //必须放在第一行,否则会报错}public Day(int year, int month, int day) { this();   //这里会报错this.year = year;this.month = month;this.day = day;}public void dayPrint(){System.out.println(this.year + " 年 " + this.month + " 月 " + this.day + " 日 ");}public static void main(String[] args) {Day day1 = new Day(2024,10,17); // 直接就地初始化Day day2 = new Day(); // 直接就地初始化}}
  •  上述代码会报错,不能够形成环

6. 默认初始化

 当我们类建立好之后,如果不给成员变量初始化,那他们有默认的初始化值

public class Day {byte a;char b;short c;int d;long e;boolean f;float g;double h;String i;public static void main(String[] args) {Day day = new Day();System.out.println("byte    = " + day.a);System.out.println("char    = " + day.b);System.out.println("short   = " + day.c);System.out.println("int     = " + day.d);System.out.println("long    = " + day.e);System.out.println("boolean = " + day.f);System.out.println("float   = " + day.g);System.out.println("double  = " + day.h);System.out.println("String  = " + day.i);}}

默认值图解如下 

7. 小结

以上就是对类和对象的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450357.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux用户态条件变量和内核态完成变量

如果我们的线程要等一个条件满足之后才可以继续向下执行,这个条件不满足的话,就要等待这个条件。这种场景经常见到,比如我们使用recv接收网络数据的时候,或者使用epoll_wait来等待事件的时候,在默认情况下,…

双指针 — 复写零

目录 1. 题目解析 2. 算法讲解 1.算法原理 2.“异地”操作 3.“就地”操作 误解 正解 从后往前完成复写操作 找到最后一个复写的数 处理边界情况 3. 编写代码 正解顺序 1.找到最后一个复写的数 2.处理边界情况 3.从后往前完成复写操作 性能分析: …

【白话文通俗易懂搞明白并解决】跨域问题

文章目录 跨域出现的场景跨域的定义解决跨域的方法方法一:JSONP方法二:添加响应头方法三:通过nginx代理跨域 跨域过滤器代码示例 跨域出现的场景 在前后端分离项目中,经常会出现跨域问题,表现为: 当在浏览…

拟声 0.37.0 | 拟物风格,超级优美,功能丰富

拟声是一款功能丰富的音视频播放器,支持多种音频来源,并具备独特的歌词弹幕、音源转换、跨设备共享与控制等功能。其创新的LRC歌词编解码器和新拟物风格的UI设计为用户提供了一个全新的视听体验。 大小:36M 百度网盘:https://pan…

7.存储过程中的事务管理(7/10)

1.引言 在现代信息技术快速发展的今天,数据库已经成为存储和管理数据的核心工具。无论是企业级应用、电子商务平台还是个人项目,数据库都扮演着不可或缺的角色。在这些应用中,数据的完整性、一致性和可靠性是至关重要的。这就引出了数据库事…

vue3--通用组件 popup 封装

在业务场景中,假设这里我们要实现点击 汉堡 后,会有一个自下而上的popup弹出层 因此这里我们需要先实现这样的一个公共的popup弹出层 那么我们这里的popup弹出层需要具备以下能力: 当popup展开时,内容视图应该不属于任何一个组件内部,而应该直接被插入到body下,这里需要…

【C++11】可变模板参数详解

个人主页:chian-ocean 文章专栏 C 可变模板参数详解 1. 引言 C模板是现代C编程中一个非常强大且灵活的工具。在C11标准中,引入了可变模板参数(variadic templates),它为模板编程带来了革命性改变。它的出现允许我们…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-8

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

FlinkCDC 实现 MySQL 数据变更实时同步

文章目录 1、基本介绍2、代码实战2.1、数据源准备2.2、代码实战2.3、数据格式 1、基本介绍 Flink CDC 是 Apache Flink 提供的一个功能强大的组件,用于实时捕获和处理数据库中的数据变更。可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB…

【云岚到家】-day07-5-实战项目-优惠券活动-活动管理

【云岚到家】-day07-5-实战项目-优惠券活动-活动管理 2 优惠券活动管理2.1 需求分析2.1.1 **新增优惠券活动**1)界面原型2)数据分析3)数据校验 2.1.2 **查询优惠券活动**1)界面原型 2.2.3 **修改优惠券活动**1) 界面原型2&#xf…

Qt-窗口对话框QMessageBox的使用(51)

目录 前言 描述 使用 自定义按钮 简单方式创建 前言 Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog类。常⽤标准对话框如下: 描述 消息对话框 QMessageBox 消息对话框是应⽤程序中最常⽤的界⾯元素。消息…

D3.js(五):实现组织架构图

实现组织架构图 效果初始化组织机构容器并实现缩放平移功能效果源码 渲染节点效果源码 渲染连线效果源码 完整源码 效果 初始化组织机构容器并实现缩放平移功能 效果 源码 import {useEffect} from react; import TreeData from ./json/tree-data.json;interface ITreeConfig…

crd介绍

在 Kubernetes 中,CRD(Custom Resource Definition)和 CR(Custom Resource)是用于扩展 Kubernetes 功能的机制。它们的关系和使用可以用一个完整案例来说明。 定义 CRD(Custom Resource Definition&#x…

中后台 B 端产品设计

中后台 B 端产品设计 一、设计目标二、设计流程三、设计要点四、相关模块 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧! 中后台B端产品设计: 是指针对企业内部业务人员和管理…

python+appium+雷电模拟器安卓自动化及踩坑

一、环境安装 环境:window11 1.1 安装Android SDK AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 这里面任选一个就可以,最终下载完主要要安装操作安卓的工具adb,安装这个步骤的前提是要…

Linux驱动开发——设备树

文章目录 1 什么是设备树?2 DTS、DTB和DTC3 DTS语法3.1 dtsi头文件3.2 设备节点3.3 标准属性3.4 根节点compatible属性3.5 向节点追加或修改内容 4 创建小型模板设备树5 设备树在系统中的体现6 绑定信息文档7 设备树常用OF操作函数7.1 查找节点的OF函数7.2 查找父/子…

【工具变量】上市公司当年是否发生财务重述指标整理Stata代码(2000-2023年)

计算说明:使用财务重述公告中所更正年报对应的年度作为财务重述的年度,若企业年报中发生财务重述取1,否则取0。本示例的财务重述是指上市公司对以前年度财务报表中的会计差错进行更正和披露,不包括股票拆分、股票红利、终止经营、…

Java 类和对象详解(上 )

个人主页: 鲤鱼王打挺-CSDN博客 Java专栏:https://blog.csdn.net/2401_83779763/category_12801101.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12801101&sharereferPC&sharesource2401_83779763&sharefromfrom_link &…

SwiftUI 如何取得 @Environment 中 @Observable 对象的绑定?

概述 从 SwiftUI 5.0(iOS 17)开始,苹果推出了全新的 Observation 框架。它作为下一代内容改变响应者全面参与到数据流和事件流的系统中。 有了 Observation 框架的加持,原本需要多种状态类型的 SwiftUI 视图现在只需要 3 种即可大…

R语言详解predict函数

R语言中predict函数在建立模型&#xff0c;研究关系时常用。但是不同type得到的结果常常被混为一谈&#xff0c;接下来&#xff0c;探讨predict得到的不同结果。 #数据 set.seed(123) n<-1000 age<-rnorm(n,mean50,sd10) gender<-rbinom(n,1,0.5) disease<-rbinom…