Java编程练习之this关键字(2)

this关键字除了可以调用成员变量或成员方法之外,还可以作为方法的返回值。

示例:创建一个类文件,在类中定义Book类型的方法,并通过this关键字进行返回。

public class Book{

    public Book getBook(){

          return this;

}

}

在getBook()方法中,方法的返回值为Book类,所以方法体中使用return this这种形式将Book类的对象进行返回。

通过上述可以得知this关键字可以调用类的成员变量和成员方法,此外,它还可以调用类中的构造方法。

示例:使用this关键字实现给饼只加一个蛋

顾客买鸡蛋灌饼要求加几个鸡蛋,烙饼大妈就给加几个鸡蛋,不要求的时候就只加一个鸡蛋。创建鸡蛋灌饼类,创建有参数和无参数构造方法,无参数构造方法调用有参数构造方法并实现初始化。

package zhtestdemo;

public class demo {  //创建鸡蛋灌饼类,类名叫demo;
/**/
    int eggCount;  //属性:鸡蛋灌饼里鸡蛋的个数;
    
    public  demo(int eggCount) {   //有参构造方法demo;
        this.eggCount=eggCount;           //将参数eggCount的值赋给成员变量eggCount;
        System.out.println("这个鸡蛋灌饼里有"+eggCount+"个鸡蛋。");
    }
    //无参数构造方法,默认给饼加一个蛋;
    public demo() {
        //调用参数为鸡蛋灌饼里蛋的个数的构造方法,并设置鸡蛋灌饼里蛋的个数为1;
        this(1);
    }
    public static void main(String[] args) {
        demo cake1=new demo();  //创建无参的鸡蛋灌饼对象
        demo cake2=new demo(5); //创建鸡蛋灌饼对象,且鸡蛋灌饼里有5个蛋
    }
    
}

练习1:设计电池类,在电池类的构造方法中声明一节5号电池的电压为1.5伏,使用this关键字调用电池类中的构造方法,实现电压为9伏的叠层电池,运行结果如下图。

package zhtestdemo;

public class demo {  //创建电池类,类名叫demo;
/**/
    int num;  //属性:5号电池的个数;
    
    public  demo(int num) {   //有参构造方法demo;
        this.num=num;           //将参数num的值赋给成员变量num;
        if (num==1) {
        System.out.println(num+"节5号电池的电压为1.5V。");
        }else {
            System.out.println("叠层电池可由"+num+"节5号电池串联而成,其电压为9.0V。");
        }
    }
    //无参数构造方法,默认1节5号电池;
    public demo() {
        //调用参数为电池个数的构造方法,并设置电池数量为1;
        this(1);
    }
    public static void main(String[] args) {
        demo battery1=new demo();  //创建无参的1节5号电池对象;
        demo battery2=new demo(6); //创建6节5号电池对象;
    }
    
}
 

练习2:创建信用卡类,有两个成员变量分别是卡号和密码,如果用户开户时没有设置初始密码,则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。

package zhtestdemo;

public class demo {  //创建信用卡类,类名叫demo;
/**/
    String card;  //属性:信用卡号;
    String password;  //属性:信用卡密码;
    
    public  demo(String password) {   //有参构造方法demo,;
        this.password= password;    //将参数password的值赋给成员变量password;
        System.out.println("您正在开户未设置初始密码,请输入默认密码:"+password);
    }
    //有参数构造方法,用于重置密码的用户确认密码;
    public demo(String card,String password) {
        this.card=card;
        this.password=password;
        System.out.println("恭喜您开户成功!"+'\n'+"请您确认账号:"+card+'\n'+"请您确认密码:"+password);
    }
    public static void main(String[] args) {
        demo card1=new demo("123456");  //创建未设置初始密码的信用卡对象;
        demo card2=new demo("8888888","324567"); //创建已设置密码的信用卡对象;
    }
    
}
 

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

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

相关文章

宿舍人走断电系统的重要性

宿舍人走断电系统石家庄光大远通电气有限公司公寓智能用电管理系统适合集体公寓、学生宿舍等应用场景,具备多种性能,满足多种形式需求,解决方案面向实际;集计量控制、违规用电管理、用电过程管理等功能于一体。系统采用集中控制&a…

大创项目推荐 深度学习验证码识别 - 机器视觉 python opencv

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &#x…

使用Scrapy 爬取“http://tuijian.hao123.com/”网页中左上角“娱乐”、“体育”、“财经”、“科技”、历史等名称和URL

一、网页信息 二、检查网页,找出目标内容 三、根据网页格式写正常爬虫代码 from bs4 import BeautifulSoup import requestsheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/53…

C#操作pdf之使用itext实现01-生成一个简单的table

创建.net 8控制台项目 安装itext <PackageReference Include"itext" Version"8.0.2" /><PackageReference Include"itext.bouncy-castle-adapter" Version"8.0.2" /><PackageReference Include"itext.bouncy-cast…

【从零开始学习Java重要知识 | 第三篇】暴打ReentrantLock底层源码

目录 前言&#xff1a; 前置知识&#xff1a; 什么是公平锁与非公平锁&#xff1f; 尝试自己构造一把锁&#xff1a; ReentrantLock源码&#xff1a; 加锁&#xff1a; 解锁&#xff1a; 总结&#xff1a; 前言&#xff1a; 在并发编程中&#xff0c;线程安全是一个重…

【机器学习】调配师:咖啡的完美预测

有一天&#xff0c;小明带着一脸期待找到了你这位数据分析大师。他掏出手机&#xff0c;屏幕上展示着一份详尽的Excel表格。“看&#xff0c;这是我咖啡店过去一年的数据。”他滑动着屏幕&#xff0c;“每个月的销售量、广告投入&#xff0c;还有当月的气温&#xff0c;我都记录…

day16 DOM(2)——获取设置表单的值

目录 操作表单元素属性H5自定义属性——data 操作表单元素属性 表单很多情况&#xff0c;也需要修改属性&#xff0c;比如点击眼睛&#xff0c;可以看到密码&#xff0c;本质是把表单类型转换成文本框正常的有属性有取值的&#xff0c;跟其它的标签属性没有区别 获取&#xff…

web蓝桥杯真题--11、蓝桥知识网

介绍 蓝桥为了帮助大家学习&#xff0c;开发了一个知识汇总网站&#xff0c;现在想设计一个简单美观的首页。本题请根据要求来完成一个首页布局。 准备 开始答题前&#xff0c;需要先打开本题的项目代码文件夹&#xff0c;目录结构如下&#xff1a; ├── css │ └──…

开源进程/任务管理服务Meproc使用之HTTP API

本文讲述如何使用开源进程/任务管理服务Meproc的HTTP API管理整个服务。 Meproc所提供的全部 API 的 URL 都是相同的。 http://ip:port/proc例如 http://127.0.0.1:8606/proc在下面的小节中&#xff0c;我们使用curl命令向您展示 API 的方法、参数和请求正文。 启动任务 …

C++I/O流——(4)格式化输入/输出(第二节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 含泪播种的人一定能含笑收获&#xff…

【前端设计】流光按钮

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 css body{height: 100vh;display: flex;justify-content: center;align-items: center;background…

使用 crypto-js 进行 AES 加解密操作

在前端开发中&#xff0c;数据的加密和解密是为了保障用户隐私和数据的安全性而常见的任务。AES&#xff08;Advanced Encryption Standard&#xff09;是一种对称密钥加密算法&#xff0c;被广泛用于保护敏感信息的传输和存储。本文将介绍 AES 加解密的基本原理&#xff0c;并…

智慧文旅运营综合平台:重塑文化旅游产业的新引擎

目录 一、建设意义 二、包含内容 三、功能架构 四、典型案例 五、智慧文旅全套解决方案 - 210份下载 在数字化浪潮席卷全球的今天&#xff0c;智慧文旅运营综合平台作为文化旅游产业与信息技术深度融合的产物&#xff0c;正逐渐显现出其强大的生命力和广阔的发展前景。 该…

二叉树的直径(LeetCode 543)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给你一棵二叉树的根节点&#xff0c;返回该树的直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的长度由它们之间边数…

【Docker】实战多阶段构建 Laravel 镜像

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 本节适用于 PHP 开发者阅读。Laravel 基于 8.x 版本&#xff0c;各个版本的文件结构可能会有差异&#xff0c;请根据实际自行修改。 准备 新…

cs231n assignment1——SVM

整体思路 加载CIFAR-10数据集并展示部分数据数据图像归一化&#xff0c;减去均值&#xff08;也可以再除以方差&#xff09;svm_loss_naive和svm_loss_vectorized计算hinge损失&#xff0c;用拉格朗日法列hinge损失函数利用随机梯度下降法优化SVM在训练集和验证集计算准确率&a…

【图解数据结构】顺序表实战指南:手把手教你详细实现(超详细解析)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;图解数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️线性表1.1 &#x1f514;线性表的定义1.2 &#x1f514;线性表的存储结构 二. ⛳️顺序表…

web前端项目-金山打字游戏【附源码】

金山打字 【金山打字】这是一个练习打字的游戏&#xff0c;当游戏开始后&#xff0c;界面从顶部不断落下内容为随机字母的方块&#xff0c;当按下相对应的按键时&#xff0c;就会清除对应方块。游戏难度会随着落下的速度加快而提高。玩家每次成功清除字母方块&#xff0c;都会…

spawn_group | spawn_group_template | linked_respawn

字段介绍 spawn_group | spawn_group_template 用来记录与脚本事件或boss战斗有关的 creatures | gameobjects 的刷新数据linked_respawn 用来将 creatures | gameobjects 和 boss 联系起来&#xff0c;这样如果你杀死boss&#xff0c; creatures | gameobjects 在副本重置之前…

六、数组(1)一维数组

所谓数组&#xff0c;就是一个集合&#xff0c;里面存放了相同类型的数据元素 特点1&#xff1a;数组中每个数据元素都是相同的数据类型 特点2&#xff1a;数组是由连续的内存位置组成的 一、一维数组的定义方式 1、数据类型 数组名[数组长度]; 2、数据类型 数组名[数组长度…