Java类与对象(一)

类的定义与使用

在Java中使用关键字class定义一个类,格式如下:

class 类名{// 成员变量/字段/属性//成员方法/行为
}

Java中类和c语言中的结构体有点类似,
在Java中类名一般采用大驼峰(每个首字母大写)的形式,并且一个Java文件中就只写一个类
成员变量与一般变量的定义相比要在前面加上访问修饰限定符
方法的定义与前文介绍的方法定义相同。
例如我们定义一个Dog类:

 class Dog {public String name;//名字public String color;//颜色// 狗的属性public void barks() {System.out.println(name + ": 旺旺旺~~~");}// 狗的行为public void wag() {System.out.println(name + ": 摇尾巴~~~");}
}

访问修饰限定符

访问修饰限定符
这张图片就是反应访问修饰限定符及其作用范围。有许多东西还没介绍过,例如包和子类。在后面会一一介绍,还有default是默认访问修饰限定符,就是不加上访问修饰限定符时的权限。

类的实例化

类的实例化就是相当于创建一个对象了(跟c语言创建结构体变量一样),类的实例化通过关键字new来创建。实例化形式就是类名 变量名 = new 类名();
我们上面创建的Dog类来创建一个dog对象。
然后我们就可以通过 变量名.成员 来访问类中的成员变量和方法。

Dog dog = new Dog();
dog.wag();

作者对类和对象以及面向对象的理解

就拿人来举例,我认为类就相当于人总称而对象就相当于个人个体,类就像它的名字一样是一类事物共有的东西抽象而出,而对象就是具体的。

面向对象就是通过对象之间互相交互来实现功能,面向过程就是将实现一件事的每一步都一一实现。

就拿洗衣服举例,早些时候洗衣服人们都是,泡水-放洗衣粉-搓洗-清洗,这就像是面向过程一样,事事亲为。而现在就是放衣服进洗衣机,这就是人对象和洗衣机对象交互,具体洗衣过程不去了解 。

this引用

官方的一点解释就是:
this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
我的理解就是指出当前对象的成员的引用,防止乱套。例如我们写一个日期类,当我们将设置日期的成员函数的参数与成员变量同名idea就会出错,导致赋值不成功。
this引用

但我们如果像下面这样使用this引用就不会出现这种情况。所以习惯加上this引用。


public class Date {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 printDate(){System.out.println(this.year + "/" + this.month + "/" + this.day);}
}

this引用正确使用

this引用的特性

  1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2. this只能在"成员方法"中使用
  3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象

构造方法

像我们学习c语言结构体时对成员变量的初始化都是使用成员函数,向上面我们Data类时我们也是定义了一个setDay方法来初始化成员变量,但是在Java中我们就可以使用构造方法来完成这个件事情。构造方法只会在实例化对象时调用一次。

构造方法定义规则

名字与类名相同,没有返回值类型,设置为void也不行
一般情况下使用public修饰
可以重载
在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
如同上面的Data的构造方法定义结构如下:

public Data(int year, int month, int day){this.year = year;this.month = month;this.day = day;}

通过构造方法初始化成员对象

如此在实例化对象时就可以直接传参数来初始化成员对象,
Data data = new Data(2024,5,12);
但是我们此时就不能在像原来不传参的实例化一样调用了,原因在于如果我们自己不写构造方法那idea自己会给我们提供一个不带参的构造方法。如果要调用就要自己实现了。

idea快捷实现构造函数

1.鼠标右键,然后点击Generate,或者(Alt+Insert)。
快捷方式
2.然后鼠标左击Consructor
Consructor
3.然后根据需求点击几个参数的构造方法,用Ctrl+鼠标左击。
点击

构造方法与this引用的联系

如果构造方法中要用this(…)来调用其他构造方法必须放在第一句。且不能形成环,你调用我,我调用你。

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

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

相关文章

类和对象一(从封装开始讲述)

目录: 一.封装 二.封装扩展之包,自定义包 三.访问限定符 四.static成员 一.封装:封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互。面向对象…

Reactor Netty TCP 服务器端-响应式编程-011

🤗 ApiHug {Postman|Swagger|Api...} = 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Next Generation API Development Platform…

一款简约大气的个人单页介绍主页(附加源码)

一款简约大气的个人单页介绍主页(附加源码) 效果图部分源码领取源码下期更新预报 效果图 部分源码 .box_bg{width: 100%;height: 100%; }.wenzi{text-align: center;float: left;display: inline;width: 112px;line-height: 48px; } .wenzi2{text-align…

Hikyuu高性能量化研究框架助力探索

Hikyuu Quant Framework 是一款基于C/Python的开源量化交易分析与研究工具,主要用于A股市场的交易策略分析与回测,目前不支持期货等,需要自行改造。 Hikyuu的目标 Hikyuu的最初目的是为了快速对A股全市场股票进行策略回测和验证&#xff0c…

【C++11】列表初始化、右值引用的详细讲解(上)

前言 在一开始学C之前我们就简单的了解了一下C的发展历史。 相比较而言,C11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率加了许多特性,约140个新特性。使得C…

《A data independent approach to generate adversarial patches》论文分享(侵删)

原文链接:A data independent approach to generate adversarial patches | Machine Vision and Applications author{Xingyu Zhou and Zhisong Pan and Yexin Duan and Jin Zhang and Shuaihui Wang}, 一、介绍 在图像识别领域,与数字域中的攻击相比…

【C++杂货铺铺】AVL树

目录 🌈前言🌈 📁 概念 📁 节点的定义 📁 插入 📁 旋转 1 . 新节点插入较高左子树的左侧---左左:右单旋 2. 新节点插入较高右子树的右侧---右右:左单旋 3. 新节点插入较高左…

工业级路由器的穿透力是不是更强(原创科普)

今天我想和大家聊聊工业级路由器的一个重要特性——穿透力。作为一名从事工业网络通信的工程师,我发现很多用户在选择工业级路由器时,都会问到一个问题:"工业级路由器的穿透力是不是更强?"下面就让我来为大家解答这个疑问。当然如果有通信产品需要也可以关注星创易联…

Kafka效率篇-提升效率三板斧

kafka在效率上做了很多的努力。最初的一个使用场景是处理网页上活跃的数据,它往往有非常大的体量,每个页面都能产生数十条写入。而且我们假设每条消息都会被至少一个消费者消费(通常是多个),因此,我们努力让…

二维费用背包分组背包

二维费用背包&分组背包 一定要做的

真要这么卷?某国产大模型定价下调90%,百万 tokens 只需 1 元!

就在刚刚,国内明星AI公司——智谱AI官宣重磅炸弹: 将能力对标GPT3.5-Turbo的GLM-3的大模型API调用价格最高下调90%,价格仅为原来的十分之一! 废话不多说,直接上图: 官网地址:https://open.big…

机器视觉技术精准测量点胶高度与宽度:提升生产质量的新利器

在现代化生产线中,点胶工艺是许多产品制造过程中的重要环节。点胶的高度和宽度直接影响到产品的质量和性能。传统的测量方法往往效率低下、精度不高,而机器视觉技术的引入,为点胶高度和宽度的测量带来了革命性的变革。本文将探讨机器视觉如何…

Linux 操作系统MySQL 数据库1

1.MySQL 数据库 数据库是“按照数据结构来组织、 存储和管理数据的仓库”。 是一个长期存储在计算机内的、 有组织的、 可共享的、 统一管理的大量数据的集合。 它的存储空间很大, 可以存放百万条、 千万条、 上亿条数据。 但是数据库并不是随意地将数据进行…

【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 容器类控件 | Group Box的使用及说明 文章编号&#xff…

测试萌新三天速通python基础(二)列表,字符串,元组,字典,遍历,容器,集合,函数

python基础 字符串下标(索引)切片字符串的替换 replace()字符串拆分 split()字符串的连接 join列表 list列表的增删改查列表的反转 reverse()排序列表嵌套元组 tuple 排序 升序降序交换变量字典 dict查询遍历容器集合函数参数函数的嵌套调⽤函数的返回值模块导⼊的⽅法____name…

【FFmpeg】Filter 过滤器 ② ( 裁剪过滤器 Crop Filter | 裁剪过滤器语法 | 裁剪过滤器内置变量 | 裁剪过滤器常用用法 )

文章目录 一、裁剪过滤器1、裁剪过滤器简介2、裁剪过滤器语法3、裁剪过滤器内置变量4、裁剪过滤器示例5、裁剪过滤器应用6、裁剪过滤器图示 二、裁剪过滤器常用用法1、裁剪指定像素的视频区域2、裁剪视频区域中心正方形 - 默认裁剪3、裁剪视频区域中心正方形 - 手动计算4、裁剪…

【Linux】轻量级应用服务器如何开放端口 -- 详解

一、测试端口是否开放 1、测试程序 TCP demo 程序(可参考:【Linux 网络】网络编程套接字 -- 详解-CSDN博客) 2、测试工具 Windows - cmd 窗口 输入命令:telnet [云服务器的公网ip] [port] 二、腾讯云安全组开放端口 1、安全组设…

【C++】——string类

前言 在C语言里面我们用的字符串都是以\0结尾的字符合集,为了操作方便所以在c中推出了stirng类 一 string介绍 1.string是表示字符串的字符串类 2.因为是类,所以他会有一些常用的接口,同时也添加了专门用来操作string的常规操作 3.string…

揭秘高效引流获客的艺术:转化技巧大公开

在数字化营销的海洋中,每个企业都如同一艘努力航行的船,而流量便是推动船只前行的风帆。如何有效吸引并获取潜在客户,即所谓的“引流获客”,已成为企业市场营销策略中不可或缺的一环。本文将详细探讨几种实用且高效的引流获客技巧…

Ardupilot开源代码之Rover上路 - 后续1

Ardupilot开源代码之Rover上路 - 后续1 1. 源由2. 问题汇总2.1 问题1:飞控选择2.2 问题2:飞控安装位置和固定2.3 问题3:各种插头、插座配套2.4 问题4:分电板缺陷2.5 问题5:电机编码器接线及正反向问题2.6 问题6&#x…