【Day7:JAVA面向对象的初级使用】

目录

  • 1、类和对象
    • 1.1 类的介绍
    • 1.2 类和对象的关系
    • 1.3 类的组成
  • 2、对象内存图
    • 2.1 单个对象内存图
    • 2.2 两个对象内存图
    • 2.3 两个引用指向相同内存图
  • 3、成员变量和局部变量
    • 3.1 成员变量和局部变量的区别
  • 4、this关键字
    • 4.1 this可以解决的问题
    • 4.2 this介绍
    • 4.3 this内存图
    • 4.4 this总结
  • 5、构造方法
    • 5.1 构造方法概述
    • 5.2 构造方法的作用
    • 5.3 构造方法的注意事项
    • 5. 4 构造方法的执行流程
  • 6、封装
    • 6.1 面向对象三大特征
    • 6.2 封装的设计规范
    • 6.3 权限修饰符
  • 7、标准JavaBean
  • 8、综合案例

在这里插入图片描述

1、类和对象

1.1 类的介绍

在这里插入图片描述

1.2 类和对象的关系

在这里插入图片描述

1.3 类的组成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、对象内存图

2.1 单个对象内存图

在这里插入图片描述

注意点:一段代码要开始运行时,先将源文件编译成字节码文件,然后主方法对应的字节码文件进入方法区,接着主方法进入栈内存,当需要创建新的对象时,也就是new对象时,就会在堆内存中开辟此对象对应的空间。
面试时,需要能回答上这三个内存区域的用法。

2.2 两个对象内存图

2.3 两个引用指向相同内存图

在这里插入图片描述

3、成员变量和局部变量

3.1 成员变量和局部变量的区别

在这里插入图片描述

4、this关键字

4.1 this可以解决的问题

在这里插入图片描述

局部变量和成员变量重名了,但是还要用成员变量,那么就可以使用this关键字了。
this的作用:可以调用本类的成员(变量和方法)。
在这里插入图片描述

4.2 this介绍

在这里插入图片描述

也就是说:谁来调用我,我就代表谁。

4.3 this内存图

在这里插入图片描述

4.4 this总结

在这里插入图片描述

5、构造方法

5.1 构造方法概述

在这里插入图片描述

5.2 构造方法的作用

在这里插入图片描述

package com.itheima.oop;public class Student {String name;int age;public Student(){System.out.println("我是无参构造方法!!!");}public Student(String name, int age){this.name = name;this.age = age;System.out.println("我是有参构造方法!!!");}
}package com.itheima.test;
import com.itheima.oop.Student;public class StudentTest {public static void main(String[] args) {Student s1 = new Student();//不传参数,则创建时调用无参构造Student s2 = new Student("马四", 16);//传参数,则创建时调用有参构造}
}输出:
我是无参构造方法!!!
我是有参构造方法!!!

5.3 构造方法的注意事项

在这里插入图片描述

在这里插入图片描述

5. 4 构造方法的执行流程

在这里插入图片描述

6、封装

6.1 面向对象三大特征

在这里插入图片描述

继承和多态放后面面向对象高级课程学习。今天只学习封装。

在这里插入图片描述

  • 案例一:
    在这里插入图片描述

  • 案例二:
    在这里插入图片描述

6.2 封装的设计规范

在这里插入图片描述

注:隐藏和暴露都是针对要使用对象的使用者而言。那如何隐藏,如何暴露呢?看下面权限修饰符知识。

6.3 权限修饰符

在这里插入图片描述
在这里插入图片描述

使用set方法和get方法,合理隐藏、合理暴露:
在这里插入图片描述

7、标准JavaBean

JavaBean是指:实体类,即封装数据的类。

在这里插入图片描述

8、综合案例

在这里插入图片描述

代码:

  • Main.java
package com.itheima.movieSystem.domain;public class Main {public static void main(String[] args) {System.out.println("==============电影信息系统==============");//1、登录验证Login login = new Login();login.login();//2、菜单选择SelectMovieInfoHandler selectMovieInfoHandler = new SelectMovieInfoHandler();selectMovieInfoHandler.menu();}
}
  • SelectMovieInfoHandler.java
package com.itheima.movieSystem.domain;
import com.itheima.movieSystem.vo.Movie;
import java.util.Scanner;public class SelectMovieInfoHandler {public void menu() {//加载数据库Movie[] data = getData();loop:while (true) {Scanner sc = new Scanner(System.in);System.out.println("1.查询全部电影信息");System.out.println("2.根据id查询电影信息");System.out.println("3.退出");int choose = sc.nextInt();switch (choose) {case 1:queryAllMovie(data);break ;case 2:queryMovieById(data);break ;case 3:System.out.println("欢迎下次观看!");break loop;default:System.out.println("没有此选项!");break ;}}}public Movie[] queryAllMovie(Movie[] data){System.out.println("全部电影如下:");for (Movie datum : data) {System.out.println(datum.toString());}return data;}public Movie queryMovieById(Movie[] data){System.out.println("请输入要查询电影的id:");Scanner sc = new Scanner(System.in);int id = sc.nextInt();for (Movie datum : data) {if (datum.getId() == id) {System.out.println(datum.toString());return datum;}}return null;}public Movie[] getData(){Movie[] arr = new Movie[2];Movie movie1 = new Movie();movie1.setId(1);movie1.setName("大力王");movie1.setScore(91);arr[0] = movie1;Movie movie2 = new Movie();movie2.setId(2);movie2.setName("魔法大师");movie2.setScore(95);arr[1] = movie2;return arr;}
}
  • Login.java
package com.itheima.movieSystem.domain;
import java.util.Random;
import java.util.Scanner;public class Login {//获取验证码public String getVerificationCode() {//初始化验证码词典库char[] arr = getContents();//生成随机验证码Random r = new Random();
//        char[] verificationCodeArr = new char[5];StringBuilder verificationCodeArr = new StringBuilder();for (int i = 0; i < 5; i++) {verificationCodeArr.append(arr[r.nextInt(arr.length)]);}return verificationCodeArr.toString();}private char[] getContents() {//初始化验证码词典库char[] arr = new char[62];for (int i = 0; i < arr.length; i++) {if (i < 26){arr[i] = (char)('a' + i);}else if (i <52){arr[i] = (char)('A' + i - 26);}else {arr[i] = (char)('0' + i - 52);}
//            System.out.print(arr[i] + " ");}return arr;}public void login(){while (true){Login login = new Login();String verificationCode = login.getVerificationCode();System.out.println("系统生成的验证码:" + verificationCode);System.out.println("请输入验证码:");Scanner sc = new Scanner(System.in);String printVerificationCode = sc.next();if (check(verificationCode, printVerificationCode)){System.out.println("登录成功,欢迎来到电影信息系统!");break;}else {System.out.println("输入的验证码错误,请重新输入!");}}}public boolean check(String verificationCode, String printVerificationCode){return verificationCode.equals(printVerificationCode);}
}
  • Movie.java
package com.itheima.movieSystem.vo;public class Movie {private String name;//电影名称private double score;//电影评分private int id;//电影idpublic Movie() {}public Movie(String name, double score, int id) {this.name = name;this.score = score;this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "电影:{" +"名称='" + name + '\'' +", 得分=" + score +'}';}
}

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

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

相关文章

MapReduce基础实战

**MapReduce基础实战** 一、引言 随着大数据时代的到来&#xff0c;数据量的快速增长对数据处理能力提出了更高的要求。MapReduce作为一种分布式计算框架&#xff0c;以其高效、容错和易于编程的特点&#xff0c;成为了处理大规模数据集的重要工具。本文将介绍MapReduce的基本…

浏览器输入URL到网页显示之间发生了什么

记&#xff1a; DNS(Domain Name System,域名系统)就是根据域名来查找对应的IP地址的一个关键系统。 域名层级关系&#xff1a; 根域名服务器&#xff08;.&#xff09;顶级域名服务器&#xff08;.com&#xff09;权威域名服务器&#xff08;server.com&#xff09; 首先浏…

5.22R语言初步学习-2(使用包、绘图)

本文逻辑可能有些凌乱&#xff0c;是在数据处理的使用中学习R语言&#xff0c;所以用到的一些包、函数等都直接写在这了&#xff0c;主要就是处理数据的一个过程可能会用到的部分函数。 包的使用 R语言的使用&#xff0c;很大程度上是借助各种各样的R包的辅助&#xff0c;从某…

Python 之程序截图常见的几种方式

pywin32 PyQt5 需要先 pip 安装 pywin32、PyQt5 &#xff0c;相关依赖 pip 会自动安装。 pip install pywin32 pip install PyQt5 下面这种方式比较强悍&#xff0c;可以根据活跃窗口的 title 名称&#xff0c;自动找到对应的窗口然后进行截图。 import sysimport win32gu…

关于智慧校园安全用电监测系统的设计

人生人身安全是大家关注的话题&#xff0c;2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起&#xff08;中国消防2019.12.应急管理部消防救援局官方微博&#xff09;&#xff0c;违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数&#…

MVSnet 代码详解(pytorch)

大致过一下MVSnet 论文中核心的点对应代码应该怎么写。 forward 函数需要 照片&#xff0c;映射矩阵&#xff0c;以及深度值。 照片的shape是 &#xff08;1&#xff0c;5,3&#xff0c;1184,1600&#xff09;代表着1个batch,5张图片&#xff0c;然后一次是每张图片的channel和…

Android低代码开发 - MenuPanel的源码剖析和基本使用

看了我上篇文章Android低代码开发 - 像启蒙和乐高玩具一样的MenuPanel 之后&#xff0c;本篇开始讲解代码。 源代码剖析 首先从MenuPanelItemRoot讲起。 package dora.widget.panelinterface MenuPanelItemRoot {/*** 菜单的标题。** return*/var title: String?fun hasTit…

大象资讯:PostgreSQL 17 Beta 1 发布!

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ PostgreSQL 全球开发小组 发布于 2024-05-23 PostgreSQL 全球开发小组宣布&#xff0c;PostgreSQL 17 的第一个测试版本现已可供下载。此版本包含 PostgreSQL 17 正式发布时将提供的所有功能的预…

IEN在Web3.0中的性能与安全优势

随着Web3.0的快速发展&#xff0c;优化网络基础设施变得至关重要。智能生态网络&#xff08;Intelligent Ecological Network, IEN&#xff09;作为新一代网络架构&#xff0c;在提升性能与增强安全方面展现出巨大潜力。本文将深入探讨IEN在Web3.0中的技术优势&#xff0c;并展…

高效利用键盘上的 caps lock(大写键)实现中英切换

先看效果 在中文输入环境中&#xff0c;Caps Lock 键经常被忽视&#xff0c;占据了键盘上的黄金位置却很少派上用场。接下来&#xff0c;我将介绍如何将这个闲置的键合理利用&#xff0c;让它变得更加实用。 第一步 设置&#xff1a; 我以五笔为例&#xff1a; 1.输入法默认…

docker如何拉取redis最新镜像并运行

要拉取Docker Hub上最新版本的Redis镜像&#xff0c;您可以使用以下命令&#xff1a; docker pull redis:latest 这里的latest标签会自动获取Redis镜像的最新版本。如果您希望指定一个确切的版本号&#xff0c;可以直接使用该版本号替换latest。例如&#xff0c;要拉取Redis版…

高铁VR虚拟全景展示提升企业实力和形象

步入VR的神奇世界&#xff0c;感受前所未有的汽车展示体验。VR虚拟现实技术以其独特的沉浸式模拟&#xff0c;让你仿佛置身于真实展厅之中&#xff0c;尽情探索汽车的每一处细节。 一、定制化展示&#xff0c;随心所欲 VR汽车虚拟展厅打破空间束缚&#xff0c;让汽车制造商能够…

力扣1809 没有广告的剧集(postgresql)

需求 Table: Playback ----------------- | Column Name | Type | ----------------- | session_id | int | | customer_id | int | | start_time | int | | end_time | int | ----------------- 该表主键为&#xff1a;session_id &#xff08;剧集id&#xff09; customer_…

VUE3.0-列表渲染

我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法&#xff0c; 其中 items 是源数据的数组&#xff0c;而 item 是迭代项的别名 <template><h3>列表渲染</h3> <p v-for"item in names&quo…

调试时JSON库一直提示 PDB找不到 使用需要对象文件来进行调试的 /DEBUG:Fastlink生成的

最近调试时一直提示上面的提示框&#xff0c;很是烦躁。 为什么会出现这个错误呢&#xff0c;我一直使用的是/DEBUG。出现原因没有找出来&#xff0c;理论上市使用了/DEBUG:Fastlink这个模式才会出&#xff0c;但是就是一直在报这个错误。 /DEBUG&#xff08;生成调试信息&am…

同旺科技 FLUKE ADPT 隔离版发布 ---- 3

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B 总体连接&#xff1a; 连接线&#xff0c;根据自己实际需求而定&#xff1b; …

Flutter 中的 SnackBarAction 小部件:全面指南

Flutter 中的 SnackBarAction 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;SnackBar 是一种流行的用于提供轻量级反馈的方式&#xff0c;它可以在屏幕上短暂显示消息。SnackBarAction 则是与 SnackBar 结合使用的一种按钮组件&#xff0c;允许用户对显示的消息做出响…

数据结构--顺序表

1.顺序表的概念 1.1线性表 具有相同特性的数据元素的有限序列&#xff0c;再逻辑结构上呈现线性&#xff0c;但是在物理结构上不一定是线性&#xff08;也就是在内存中非线性&#xff09; 顺序表是线性表中的一种&#xff0c;他的底层逻辑就是数组&#xff0c;就是对数组的一…

flink程序本地运行:No ExecutorFactory found to execute the application

1.问题描述 在idea中运行flink job程序出现如下错误&#xff1a; Exception in thread "main" java.lang.IllegalStateException: No ExecutorFactory found to execute the application. at org.apache.flink.core.execution.DefaultExecutorServiceLoader.getE…

7文法分析 软设刷题 软考 +

文法分析 刷题1-55-1010-1515-2020-2525-3030-3535-4040-45 知识点1-55-1010-1515-2020-2525-3030-35 刷题 1-5 1 沟通渠道公式如下&#xff1a;Mn*&#xff08;n-1&#xff09;/ 2。M表示沟通渠道数&#xff0c;n表示项目中的成员数 2 本题给出的NFA&#xff0c;能够识别字…