java 16 练习题:类与方法

文章目录

    • 实例1:使用 this 关键字实现给饼只加一个蛋
        • 练习1:设计加油站类和汽车类,加油站提供一个给车加油的方法,参数为剩余汽油数量。每次执行加油方法,汽车的剩余汽油数量都会加 2。
        • 练习2:智能手机的默认语言为英文。,但制造手机时可以将默认语言设置为中文。编写手机类, 无,参构造方法使用默认语言设计,利用有参构造方法修改手机的默认语言。
        • 练习3:张三去KFC买可乐,商家默认不加冰块。但是张三可以要求加 3 个冰块。请利用有参构造方法实现上述功能。
        • 练习4:创建教师类,类中有姓名、性别和年龄三个属性,在构造方法中使用 this 关键字分别为这三个成员属性赋值。
        • 练习5:一只大熊猫,长 1.3 米,重 90千克。在自定义方法中使用this关键字调用类的成员变量并在控制台输出这只大熊猫的信息。
        • 练习6:创建信用卡类,有两个成员变量分别是卡号和密码,如果用户开户时没有设置初始密码,则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。

扩展知识

  • 不定长参数:
    声明方法时,如果有若平个相同类型的参数,可以定义为不定长参数,该类型的参数声明如下∶
权限修饰符 返回值类型 方法名(参数类型... 参数名)

注意∶ 参数类型和参数名之间是三个点,而不是其他数量或省略号。

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

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

public class EggCake { // 创建鸡蛋灌饼EggCake类int eggCount; // 鸡蛋灌饼里蛋的个数(属性)// 有参数构造方法,参数是给饼加蛋的个数public EggCake(int eggCount) { // 参数为鸡蛋灌饼里蛋的个数的构造方法this.eggCount = eggCount; // 将参数eggCount的值付给属性eggCountSystem.out.println("这个鸡蛋灌饼里有" + eggCount + "个蛋。");}// 无参数构造方法,默认给饼加一个蛋public EggCake() { // 默认构造方法// 调用参数为鸡蛋灌饼里蛋的个数的构造方法,并设置鸡蛋灌饼里蛋的个数为1this(1);}public static void main(String[] args) {EggCake cake1 = new EggCake(); // 创建无参的鸡蛋灌饼对象EggCake cake2 = new EggCake(5); // 创建鸡蛋灌饼对象,且鸡蛋灌饼里有5个蛋}
}
定义了两个构造方法,在无参构造方法中可以使用this关键字调用有参的构造方法。但是要注意,this()语句之前不可以有其他代码。
练习1:设计加油站类和汽车类,加油站提供一个给车加油的方法,参数为剩余汽油数量。每次执行加油方法,汽车的剩余汽油数量都会加 2。

class GasStation {public int addOil(int oilVolume) {oilVolume += 2;return oilVolume;}
}public class AutoMobile {public static void main(String[] args) {int leftOilVolume = 10;GasStation gs = new GasStation();for (int i = 1; i <= 5; i++) {leftOilVolume = gs.addOil(leftOilVolume);}System.out.println("该车现有油量:" + leftOilVolume + "L。");}
}
练习2:智能手机的默认语言为英文。,但制造手机时可以将默认语言设置为中文。编写手机类, 无,参构造方法使用默认语言设计,利用有参构造方法修改手机的默认语言。

public class Cellphone {public Cellphone() {System.out.println("智能手机的默认语言为英文");}public Cellphone(String defaultLanguage) {System.out.println("将智能手机的默认语言设置为" + defaultLanguage);}public static void main(String[] args) {Cellphone cellphone1 = new Cellphone();Cellphone cellphone2 = new Cellphone("中文");}
}
练习3:张三去KFC买可乐,商家默认不加冰块。但是张三可以要求加 3 个冰块。请利用有参构造方法实现上述功能。

public class IceBlock {public IceBlock() {System.out.println("商家默认可乐里没有冰块……");}public IceBlock(String name, int number) {System.out.println(name + "要求向可乐里放入" + number + "个冰块。");}public static void main(String[] args) {IceBlock block = new IceBlock();IceBlock iceBlock = new IceBlock("张三", 3);}
}
练习4:创建教师类,类中有姓名、性别和年龄三个属性,在构造方法中使用 this 关键字分别为这三个成员属性赋值。

public class Teacher {String name;char sex;int age;public Teacher(String name, char sex, int age) {this.name = name;this.sex = sex;this.age = age;System.out.println("教师姓名:" + name + "\n教师性别:" + sex + "\n教师年龄:" + age);}public static void main(String[] args) {Teacher chinese = new Teacher("张三", '男', 38);Teacher math = new Teacher("李四", '男', 45);Teacher english = new Teacher("王五", '女', 32);}
}
练习5:一只大熊猫,长 1.3 米,重 90千克。在自定义方法中使用this关键字调用类的成员变量并在控制台输出这只大熊猫的信息。

public class Panda {private double length = 1.3;private double weight = 90.0;public String getMessages() {return "熊猫体长" + this.length + "米,体重" + this.weight + "KG。";}public static void main(String[] args) {Panda panda = new Panda();System.out.println(panda.getMessages());}
}
练习6:创建信用卡类,有两个成员变量分别是卡号和密码,如果用户开户时没有设置初始密码,则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。

public class Credit {String cardNum;String password;public Credit(String cardNum, String password) {this.cardNum = cardNum;this.password = password;if (password.equals("123456")) {System.out.println("信用卡" + cardNum + "的默认密码为" + password);} else {System.out.println("重置信用卡" + cardNum + "的密码为" + password);}}public Credit(String cardNum) {this(cardNum, "123456");}public static void main(String[] args) {Credit initialCredit = new Credit("4013735633800642");Credit resetedCredit = new Credit("4013735633800642", "168779");}
}

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

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

相关文章

C++ 指定范围内递增初始化一个vector<int> | Python: list(range(31, 90))

通过lambda表达式 std::iota()实现&#xff1a; template <typename Tp> inline void print_vec(const std::vector<Tp>& vec) {fmt::print("[{}]\n", fmt::join(vec, ", ")); }// 相当于Python的lst list(range(31, 90))const std::ve…

leetCode算法—10. 正则表达式匹配

10.给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 难度&#xff1a;困难 *** 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹…

VTK读写数据

png格式图片转jpg #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2) VTK_MODULE_INIT(vtkInteractionStyle)#include <vtkSmartPointer.h> #include <vtkPNGReader.h> #include <vtkJPEGWriter.h> #include <vtkImageViewer2.h>…

论文中公式怎么降重 papergpt

大家好&#xff0c;今天来聊聊论文中公式怎么降重&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 论文中公式怎么降重 一、引言 在论文撰写过程中&#xff0c;公式是表达学…

php伪协议 [NISACTF 2022]easyssrf

打开题目 我们直接用 file:/// 协议读取看看flag文件 file:///flag 点击curl得到回响 得到提示告诉我们应该看看提示文件 file:///fl4g 跟着去访问了一下 再跟着去访问 从代码中我们可以看出 get传参file&#xff0c;我们用stristr检测file参数里面是否含有file&#xff…

智能优化算法应用:基于堆优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于堆优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于堆优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.堆优化算法4.实验参数设定5.算法结果6.参考文…

一篇文章搞定Vue3响应式数据最常用的ref、reactive、computed、watch方法

前言 Vue3 中可以通过响应式 API 来创建响应式对象&#xff0c;相较于 Vue2 中使用 Object.definProperty 来劫持 get 和 set 不同&#xff0c;Vue3 中使用的是 Proxy 来创建响应式对象&#xff0c;使用Proxy有以下几点优势&#xff1a; 1. 对象新增属性不再需要手动 $set 添…

创建型模式 | 原型模式

一、原型模式 1、原理 原型模式&#xff0c;用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象&#xff0c;而且不需要知道任何创建的细节。原型像是一个模板&#xff0c;可以基于它复制好多…

LeetCode Hot100 215.数组中的第k个最大元素

题目&#xff1a; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 方法一&#xff…

HTML输出特殊字符详细方法

以下是部分特殊字符代码表&#xff0c;它们的完整应用代码格式为&#xff1a;&#;用下面的四位数字替换&#xff0c;将得到对应的符号。&#xff08;注意&#xff1a;应用这些代码&#xff0c;编辑器应该切换到HTML模式&#xff09; ☏260f ☎260e ☺263a ☻263b ☼263c ☽…

Leetcode—73.矩阵置零【中等】

2023每日刷题&#xff08;六十六&#xff09; Leetcode—73.矩阵置零 空间复杂度为O(mn)版实现代码 class Solution { public:void setZeroes(vector<vector<int>>& matrix) {int rowLen matrix.size();int colLen matrix[0].size();vector<int> row…

阿赵UE学习笔记——3、常用界面窗口

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。继续学习虚幻引擎&#xff0c;这次介绍的是编辑器的常用界面窗口。 一、视口 这个视口的概念&#xff0c;可以体现出UE对于多屏幕同时显示是多么的友好。我们开发游戏的时候&#xff0c;一般都会同一台电脑用2个或者以上显示器…

Spring Security登录的简单解析

Spring Security登录的简单解析 1.自己写的登录2.进入authenticationManager.authenticate(authenticationToken);3 进入result provider.authenticate(authentication);4 进入 user retrieveUser(username, (UsernamePasswordAuthenticationToken) authentication);5 进入 U…

算法基础之约数之和

约数之和 核心思想&#xff1a; #include<iostream>#include<algorithm>#include<vector>#include<unordered_map>using namespace std;typedef long long LL;const int N 110 , mod 1e97;int main(){int n;cin>>n;unordered_map<int,int&…

C++ 反转链表

定义一个函数&#xff0c;输入一个链表的头结点&#xff0c;反转该链表并输出反转后链表的头结点。 思考题&#xff1a; 请同时实现迭代版本和递归版本。 数据范围 链表长度 [0,30] 。 样例 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->N…

Unity Camera.ScreenPointToRay方法了解与使用

ScreenPointToRay方法是Unity Camera类中一个用于将屏幕上的点转换成一条射线的方法。 该方法声明如下&#xff1a; public Ray ScreenPointToRay(Vector3 pos); 参数 pos 是屏幕上的一个点的位置&#xff0c;以屏幕坐标系表示。 该方法将返回一条从摄像机位置通过该屏幕点…

需求:通过按钮的点击事件控制另一个输出框/按钮的点击

目录 第一章 接到需求 第二章 了解需求 第三章 解决需求 第四章 优化代码 第五章 解决问题 第一章 接到需求 最近开发的时候遇到这么一个事&#xff0c;技术经理是个全栈&#xff0c;已经把接口生成了&#xff0c;而且前端页面也写好了一个初稿&#xff0c;操作什么的功…

tp6使用Smarty模板引擎

安装Smarty模板引擎&#xff1a;首先&#xff0c;确保你已经安装了Smarty模板引擎。你可以通过Composer进行安装&#xff0c;或者手动下载并解压Smarty的库文件。 配置TP6框架&#xff1a;在TP6的配置文件中&#xff0c;你需要进行一些配置来启用Smarty模板引擎。通常&#xf…

【已解决】taos时序数据库3.0版本,怎么按照时间分组?

taos数据库中按照时间分组&#xff0c;在2.4版本时候可以直接使用INTERVAL(time_unit)来查询。例如 前面可以直接添加_ts的。但是在3.0版本之后&#xff0c;如果直接使用的话&#xff0c;只会返回count&#xff1a; 没有前面的时间。那么在3.0版本时候&#xff0c;怎么修改呢&a…

在mt4上怎么查看CHFJPY品种的合约细则?

在MetaTrader 4 (MT4) 上查看CHFJPY品种的合约细则的方法如下&#xff1a; FXCM福汇官方个人注册登录流程 1.打开MT4软件并登录到您的交易账户。 2.在MT4界面的"市场观察"窗格中&#xff0c;找到并右键单击"CHFJPY"货币对。如果您无法找到"市场观察…