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.hqwc.cn/news/418914.html

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

相关文章

深度强化学习Task2:策略梯度算法

本篇博客是本人参加Datawhale组队学习第二次任务的笔记 【教程地址】 文章目录 基于价值算法和基于策略算法的比较策略梯度算法策略梯度算法的直观理解策略梯度算法REINFORCE算法基于平稳分布的策略梯度算法REINFORCE算法实现策略函数设计模型设计更新函数设计 练习总结 基于价…

JRP Version 1.4.120

使用Flask学习制作网页一个月后: 借用HTML书籍学习,自己做的NAS管理系统终于是长得好看了一些: 使用模版继承,最开始是引用人家的库 from flask_bootstrap import Bootstrap, 效果: 我准备进一步管理但是发…

Linux——进程等待

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、为什么要进程等待二、进程等待的方法1、wait方法2、waitpid方法 三、获取子进程status 一…

如何自学Python:一份详细的指南

📝个人主页:五敷有你 🔥系列专栏:有感而谈⛺️稳中求进,晒太阳 引言 Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而受到许多程序员的喜爱。无论是数据分析、网络开发&#…

为什么选择 go/gplang

原因 C/C代码写的是真慢;自个写的C/C 运行没有go快,还更慢。 性能记录 两数之和 俩个链表相加 // TODO 有时间放更多题目的性能对比

人工智能攻克奥数几何难题:AlphaGeometry 接近金牌选手水平

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

instance_spawn_groups

字段介绍 此表通过 Boss 状态管理副本内的刷新组一旦满足任何 FLAG_ACTIVATE_SPAWN 条件,将激活预设的刷新组,任何 FLAG_BLOCK_SPAWN 条件将不激活刷新组 instance_spawn_groups instanceMapId 副本地图 IDbossStateId Boss 状态 ID,取值参…

Python项目——搞怪小程序(PySide6+Pyinstaller)

1、介绍 使用python编写一个小程序,回答你是猪吗。 点击“是”提交,弹窗并退出。 点击“不是”提交,等待5秒,重新选择。 并且隐藏了关闭按钮。 2、实现 新建一个项目。 2.1、设计UI 使用Qt designer设计一个UI界面&#xff0c…

【51单片机】矩阵按键

0、前言 参考&#xff1a;普中 51 单片机开发攻略 1、硬件 2、软件 main.c #include <reg52.h> #include <intrins.h> #include "delayms.h"typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; #define GPIO_KEY P1 #d…

kafka(一)——简介

简介 Kafka 是一种分布式、支持分区、多副本的消息中间件&#xff0c;支持发布-订阅模式&#xff0c;多用于实时处理大量数据缓存的场景&#xff0c;类似于一个“缓存池”。 架构 Producer&#xff1a;消息生产者&#xff1b;Consumer&#xff1a;消息消费者&#xff1b;Brok…

SpringMVC传递数据给前台

SpringMVC有三种方式将数据提供给前台 第一种 使用Request域 第二种 使用Model&#xff08;数据默认是存放在Request域中&#xff09; 与第一种方式其实是一致的 第三种 使用Map集合&#xff08;数据默认是存放在Request域中&#xff09;

PLC物联网网关BL104实现PLC协议转MQTT、OPC UA、Modbus TCP

随着物联网技术的迅猛发展&#xff0c;人们深刻认识到在智能化生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的物联网数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化和数字化工厂应用环境中。 无缝衔…