Java面向对象学习笔记-2

前言

本文介绍了Java中类的定义和对象的创建的基本概念。我们通过示例代码演示了如何定义不同类型的类,包括管理员信息、顾客信息、学校信息和访客信息,并展示了如何创建这些类的对象以及如何访问它们的属性和方法。这些示例有助于理解面向对象编程的基本原理,以及如何在Java中应用这些概念。

类的定义和对象的创建

Admin 类 - 管理员信息

Admin 类用于表示管理员,包括管理员的名称和密码。以下是 Admin 类的代码示例:

public class Admin {String name;String password;public void show() {System.out.println("用户名:" + name + ",密码:" + password);}
}

Admin 类的一个典型用例是管理系统中的管理员账户。管理员可以使用用户名和密码登录系统,并具有权限执行特定任务。

Customer 类 - 顾客信息和积分

Customer 类用于表示顾客信息,包括积分和卡类型。以下是 Customer 类的代码示例:

public class Customer {int jifeng; // 积分String type; // 卡类型public void show() {System.out.println("积分:" + jifeng + ",卡类型:" + type);}public void huikui() {// 金卡客户积分大于1000分或普卡客户积分大于5000,获得回馈积分500分if (("金卡".equals(type) && jifeng > 1000) || ("普卡".equals(type) && jifeng > 5000)) {System.out.println("回馈积分500分!");} else {System.out.println("谢谢惠顾!");}}
}

Customer 类适用于管理顾客的积分和卡类型。根据不同的条件,系统可以计算并回馈积分给顾客。

School 类 - 学校信息

School 类用于表示学校的信息,包括名称、教室数目和机房数目。以下是 School 类的代码示例:

// 类名
public class School {// 属性String name; // 名称int jsNumber; // 教室数目int jfNumber; // 机房数目// 方法public void show() {System.out.printf("%x\n", this.hashCode()); // 内存地址System.out.println("名称:" + name + ",教室数目:" + jsNumber+ ",机房数目:" + jfNumber);}
}

School 类可用于管理学校的基本信息,如名称、教室数和机房数。该类还包含了一个方法,用于显示学校的信息。

Visitor 类 - 访客信息

Visitor 类用于表示访客的信息,包括姓名和年龄。以下是 Visitor 类的代码示例:

public class Visitor {String name;int age;public void show() {if (age <= 10) System.out.println(name + "的年龄为:" + age + ",门票免费");else System.out.println(name + "的年龄为:" + age + ",门票价格为:20元");}
}

Visitor 类可以用于跟踪访问者的信息,根据年龄确定门票价格或其他相关信息。

示例和概念

示例 1:创建 School 类的对象

public class Demo01 {public static void main(String[] args) {// 将School类,理解成一种引用数据类型,只不过是自定义的引用数据类型// 1. 声明School school;// 2. 分配空间school = new School();// 3. 点访问属性school.name = "万科城小学";school.jsNumber = 36;school.jfNumber = 8;// 4. 点访问方法school.show();}
}

在示例中,我们演示了如何创建 School 类的对象并访问其属性和方法。

示例 2:简化创建对象

public class Demo02 {public static void main(String[] args) {// 将School类,理解成一种引用数据类型,只不过是自定义的引用数据类型// 声明分配空间School school = new School();// 点访问方法school.show();// 点访问属性school.name = "万科城小学";school.jsNumber = 36;school.jfNumber = 8;// 点访问方法school.show();}
}

这个示例简化了对象的创建和访问属性/方法的过程。

示例 3:输入访客信息

import java.util.Scanner;public class Demo03 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (true) {System.out.print("请输入姓名:");String name = scanner.next();if (name.equals("n")) break; // 提供了一个退出通道System.out.print("请输入年龄:");int age = scanner.nextInt();Visitor visitor = new Visitor(); // 创建对象// 自动提示功能visitor.name = name;visitor.age = age;visitor.show();}System.out.println("退出程序");}
}

这个示例演示了如何使用 Scanner 接收用户输入,并创建 Visitor 对象来显示访客信息。

示例 4:修改 Admin 密码

import java.util.Scanner;public class Demo04 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Admin admin = new Admin(); // 准备一张卡admin.name = "admin1";admin.password = "111111";// 试图修改该卡的密码System.out.print("请输入用户名:");String name = scanner.next();System.out.print("请输入密码:");String password = scanner.next();// 核对if (name.equals(admin.name) && password.equals(admin.password)) {System.out.print("请输入新密码:");admin.password = scanner.next(); // 一定要更新到对象的属性上,才叫修改System.out.println("密码修改成功,你的新密码是:" + admin.password);} else {System.out.println("用户名或密码不正确!你没有修改权限。");}}
}

这个示例演示了用户身份验证以及如何修改管理员密码。

示例 5:顾客信息和回馈积分

public class Demo05 {public static void main(String[] args) {Customer customer = new Customer();customer.jifeng = 3050;customer.type = "普卡";customer.show();customer.huikui();}
}

在此示例中,我们创建了一个 Customer 对象,展示了顾客信息并计算回馈积分。

示例 6:多个 School 对象

public class Demo06 {public static void main(String[] args) {// 将School类,理解成一种引用数据类型,只不过是自定义的引用数据类型// 声明分配空间School school1 = new School();School school2 = new School();System.out.printf("%x\n", school1.hashCode()); // 内存地址System.out.printf("%x\n", school2.hashCode()); // 内存地址// 点访问属性school1.name = "万科城小学";school1.jsNumber = 36;school1.jfNumber = 8;school2.name = "艾溪湖小学";school2.jsNumber = 24;school2.jfNumber = 6;// 点访问方法school1.show();school2.show();}
}

这个示例演示了如何创建多个 School 对象,并显示它们的属性。

示例 7:局部变量作用域

public class Demo07 {public static void main(String[] args) {{int age = 18;System.out.println(age);}{int age = 20;System.out.println(age);}}
}

在示例 7 中,我们演示了局部变量作用域。在不同的代码块中,可以使用相同名称的局部变量,它们不会相互影响。

示例 8:对象引用和垃圾回收

public class Demo08 {public static void main(String[] args) {{School school1 = new School(); // new一律分配在堆School school2 = school1;School school3 = school1;// GC的垃圾回收机制,记录这块堆空间,引用数1+1+1school1.name = "艾溪湖小学";school1.show();}// school1被回收了,GC的垃圾回收机制感应到栈变量school1回收了,引用数0// GC的垃圾回收机制,就会考虑回收System.gc();}
}

在示例 8 中,我们演示了对象引用和垃圾回收的概念。当对象不再被引用时,垃圾回收机制可能会将其回收。

示例 9:数字格式化

public class Demo09 {public static void main(String[] args) {// Object 生命类型System.out.printf("八进制:%o,十进制:%d,十六进制:%x", 20, 20, 20); // ctrl+p (parameter)}
}

最后,在示例 9 中,我们展示了如何使用 printf 方法以不同的进制格式化和显示数字。

总结

本文介绍了Java中类的定义和对象的创建的核心概念,以及如何在实际编程中应用这些概念。通过示例,我们展示了如何创建不同类型的类,如何访问对象的属性和方法,以及如何在程序中使用这些对象来实现各种功能。这些基本概念是面向对象编程的基石,在Java编程中非常重要。读者可以通过本文的示例和概念更好地理解如何设计和使用类与对象,从而更有效地开发Java应用程序。

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

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

相关文章

扫地僧静态养站王站群:搜狗SEO站群收录养站效果

扫地僧静态养站王站群:Sogou搜狗SEO出站及收录效果,扫地僧静态站群采用了静态生成式的方式&#xff0c;只需要一个后台管理系统即可管理多个网站&#xff0c;大大提高了建站效率。建站大概45天左右&#xff0c;收录率百分之三十至百分之五十左右 如果对购买的域名进行把控&…

游戏思考30(补充版):关于逆水寒铁牢关副本、白石副本和技能的一些注释(2023/0902)

前期介绍 我是一名逆水寒的玩家&#xff0c;做一些游戏的笔记当作攻略记录下来&#xff0c;荣光不朽-帝霸来源视频连接 传送门 一、旧版铁牢关&#xff08;非逆水寒老兵服&#xff09; &#xff08;1&#xff09;老一&#xff1a;巨鹰 1&#xff09;机制一&#xff1a;三阵风…

ubuntu20.04 Supervisor 开机自启动脚本一文配置

前言: 最近发现一种非常好的开机启动服务方式,不光可以开机自启动,而且还可以进行开机节点的进程守护,这样大大确保了线程的稳定情况,这种服务甚至可以守护开机的进程,所以比之前设置 rc.local 开机自启动脚本一文配置节点好出很多,它甚至可以使用网页登录监管我开机自启…

手写RPC框架--4.服务注册

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 服务注册 服务注册a.添加服务节点和主机节点b.抽象注册中心c.本地服务列表 服务注册 a.添加服务节点和主机节点 主要完成服务注册和发现的功能&#xff0c;其具体流程如下&…

力扣(LeetCode)算法_C++——存在重复元素 II

存在重复元素 II 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入…

【Springcloud】elk分布式日志

【Springcloud】elk分布式日志 【一】基本介绍【二】Elasticsearch【1】简介【2】下载【3】安装【4】启动 【三】Logstash【1】简介【2】下载【3】安装【4】启动 【四】Kibana【1】简介【2】下载【3】安装【4】启动 【五】切换中文【六】日志收集 【一】基本介绍 &#xff08;…

【测试开发】Mq消息重复如何测试?

本篇文章主要讲述重复消费的原因&#xff0c;以及如何去测试这个场景&#xff0c;最后也会告诉大家&#xff0c;目前互联网项目关于如何避免重复消费的解决方案。 Mq为什么会有重复消费的问题? Mq 常见的缺点之一就是消息重复消费问题&#xff0c;产生这种问题的原因是什么呢…

VMware 安装 黑群晖7.1.1-42962 DS918+

本例的用的文件 1、ARPL 1.0beat 引导文件 vmdk格式&#xff1a; https://download.csdn.net/download/mshxuyi/88309308 2、DS918_42962.pat&#xff1a;https://download.csdn.net/download/mshxuyi/88309383 一、引导文件 1、创建一个虚拟机 2、下一步&#xff0c;选稍后…

Linux图形栈入门概念

Mesa在图形栈中的位置 游戏引擎&#xff1a; 游戏引擎指的是一种软件框架&#xff0c;通过编程和各种工具&#xff0c;帮助开发者设计、构建和运行视频游戏。它相当于一个虚拟的世界创造工具&#xff0c;提供了各种功能模块和资源&#xff0c;如渲染引擎、物理引擎(碰撞检测、重…

HTTP代理只能代理HTTP协议吗?

HTTP代理是一种代理服务器&#xff0c;它可以充当客户端和服务器之间的中介&#xff0c;以帮助客户端访问服务器上的资源。但是&#xff0c;HTTP代理并不仅仅只能代理HTTP协议。 HTTP代理可以代理的协议 除了HTTP协议之外&#xff0c;HTTP代理还可以代理其他协议&#xff0c;例…

Apache实现weblogic集群配置

安装apache&#xff0c;安装相对稳定的版本。如果安装后测试能否正常启动&#xff0c;可以通过访问http://localhost/进行测试。安装Weblogic&#xff0c;参见文档将bea安装目录 weblogic81/server/bin 下的 mod_wl_20.so 文件copy到 apache安装目录下Apache2/modules/目录下A…

C++ 浅拷贝和深拷贝

目录 1. 浅拷贝 2. 深拷贝 1. 浅拷贝 浅拷贝只是拷贝一个指针&#xff0c;并没有新开辟一个地址&#xff0c;拷贝的指针和原来的指针指向同一块地址&#xff0c;如果原来的指针所指向的资源释放了&#xff0c;那么再释放浅拷贝的指针的资源就会出现错误 对一个已知对象进行拷贝…

【深入解析spring cloud gateway】06 gateway源码简要分析

上一节做了一个很简单的示例&#xff0c;微服务通过注册到eureka上&#xff0c;然后网关通过服务发现访问到对应的微服务。本节将简单地对整个gateway请求转发过程做一个简单的分析。 一、核心流程 主要流程&#xff1a; Gateway Client向 Spring Cloud Gateway 发送请求请求…

探索Apache Hive:融合专业性、趣味性和吸引力的数据库操作奇幻之旅

文章目录 版权声明一 数据库操作二 Hive数据表操作2.1 表操作语法和数据类型2.2 Hive表分类2.3 内部表Vs外部表2.4 内部表操作2.4.1 创建内部表2.4.2 其他创建内部表的形式2.4.3 数据分隔符2.4.4 自定义分隔符2.4.5 删除内部表 2.5 外部表操作2.5.1 创建外部表2.5.2 操作演示2.…

代码生成商业化一些思考

代码生成解决方案 生成项目代码有3大类的解决思路&#xff1a; 1.从底到上的生成&#xff0c;部分代码生成生成一行代码或者一个方法种一小块代码生成&#xff0c;ide插件代码生成基本这种思路 2.大语言模型作为软件工程不同角色agent&#xff0c;用户给出idea每个agent自动…

GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a; 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。2、数据可视…

BFS练习1

BFS练习1 - 题目 - Daimayuan Online Judge 问题描述&#xff1a; 刚开始吓一跳&#xff0c;以为有什么更简单的呢&#xff0c;因为每一次都要走一次bfs&#xff0c;看了数据范围后&#xff0c;感觉跑一次bfs进行记录即可。 代码&#xff1a; void solve() {int a,k; cin>…

超详细的 pytest 教程(一)使用入门篇

前言 pytest到目前为止还没有翻译的比较好全面的使用文档&#xff0c;很多英文不太好的小伙伴&#xff0c;在学习时看英文文档还是很吃力。本来去年就计划写pytest详细的使用文档的&#xff0c;由于时间关系一直搁置&#xff0c;直到今天才开始写。本文是第一篇&#xff0c;主…

leetcode 1609.奇偶树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;奇偶树 思路&#xff1a; 树的层序遍历&#xff0c;用队列辅助。用一个变量记录当前是多少层&#xff0c;以及当前层的节点个数&#xff0c;依次遍历&#xff0c;因为需要判断当前层是否严格递增或递减&#xff0c;如果正…

【DFS】 1020. 飞地的数量

1020. 飞地的数量 解题思路 将靠边的陆地全部使用海水淹没 然后计算封闭的陆地面积使用Dfs将边界的陆地进行淹没&#xff0c;不能简单的置为1&#xff0c;因为边界的陆地和内部的陆地相连通&#xff0c;这种情况也需淹没最后统计剩下的陆地 class Solution {public int numE…