Java-类与对象(上)

news2024/12/22 23:27:39

什么是面向对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。
面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。
以面向对象方式来进行处理,就不关注过程,通过对象之间的交互来完成的


类定义和使用
在这里插入图片描述
对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知)


类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了


类的定义格式
在java中定义类时需要用到class关键字,具体语法如下
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}
class为定义类的关键字,ClassName为类的名字,{}中为类的主体


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述在一个文件中出现两个public类,是不正确的

在这里插入图片描述
注意事项
类名注意采用大驼峰定义
成员前写法统一为public,后面会详细解释
此处写的方法不带 static 关键字. 后面会详细解释


改变类的名字
在这里插入图片描述
在这里插入图片描述


定义一个狗类
在这里插入图片描述
定义一个学生类
在这里插入图片描述注意事项:

  1. 一般一个文件当中只定义一个类
  2. main方法所在的类一般要使用public修饰
  3. public修饰的类必须要和文件名相同
  4. 不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改

类的实例化

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意事项
new 关键字用于创建一个对象的实例.
使用 . 来访问对象中的属性和方法.
同一个类可以创建对个实例.


类和对象的说明
1.类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
2. 类是一种自定义的类型,可以用来定义变量.
3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量


this引用
两个疑问
在这里插入图片描述
1.形参名不小心与成员变量名相同
在这里插入图片描述
2. 2个对象都在调用setDate和printDate函数,但是这两个函数中没有任何有关对象的说明,setDate和printDate函数如何知道打印的是那个对象的数据呢?


this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该
引用去访问。

上述代码的正确写法如下
在这里插入图片描述
可以看到输出的结果也是正确的
在这里插入图片描述
this引用在形参中的位置
在这里插入图片描述


this引用的特性

  1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2. this只能在"成员方法"中使用
  3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
  4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收
    在这里插入图片描述

对象的构造及初始化
在这里插入图片描述
在这里插入图片描述
局部变量必须要初始化才能使用,为什么字段声明之后没有给值依然可以使用?
在这里插入图片描述


构造方法
在这里插入图片描述
构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


构造的特性
5. 名字必须与类名相同
6. 没有返回值类型,设置为void也不行
7. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
8. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
在这里插入图片描述
9. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。
在这里插入图片描述
一旦用户定义,编译器则不再生成。
在这里插入图片描述
在这里插入图片描述


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


在这里插入图片描述


  1. 构造方法中,可以通过this调用其他构造方法来简化代码
    在这里插入图片描述
    执行顺序
    在这里插入图片描述
    在这里插入图片描述
    this的三种用法
    在这里插入图片描述
    this(…)必须是构造方法中第一条语句
    不能形成环
    在这里插入图片描述

  1. 绝大多数情况下使用public来修饰,特殊场景下会被private修饰

默认初始化
在这里插入图片描述


new 关键字背后所发生的一些事情

Date d = new Date(2021,6,9);
在程序层面只是简单的一条语句,在JVM层面需要做好多事情,下面先提到两条:
1.为对象分配内存空间
2.初始化所分配的空间
即:对象空间被申请好之后,对象中包含的成员已经设置好了初始值,比如:
在这里插入图片描述


就地初始化
在声明成员变量时,就直接给出了初始值。
在这里插入图片描述


封装的概念
面向对象程序三大特性:封装、继承、多态
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互
在这里插入图片描述


包的概念
为了更好的管理类,把多个类收集在一起成为一组,称为软件包。
包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个包中的类不想被其他包中的类使用。
包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。
在这里插入图片描述


导入包中的类
例如Date类:可以使用 java.util.Date 导入 java.util 这个包中的 Date类.
在这里插入图片描述
但是这种写法比较麻烦一些, 可以使用 import语句导入包
在这里插入图片描述


如果需要使用 java.util 中的其他类, 可以使用 import java.util.*
在这里插入图片描述
在这里插入图片描述
但是我们更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况
在这里插入图片描述
util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错
在这种情况下需要使用完整的类名
在这里插入图片描述
静态导入
在这里插入图片描述



可以使用import static导入包中静态的方法和字段 ,静态导入的方式写起来更方便一些。
普通的导入
在这里插入图片描述


自定义包
基本规则
包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 ).
包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存储代码.
如果一个类没有 package 语句, 则该类被放到一个默认包中.如scr包


在这里插入图片描述


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


在这里插入图片描述
需要引入Test所在的包
在这里插入图片描述


包的访问权限控制举例
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意:如果去掉Computer类之前的public修饰符,代码也会编译失败
如下
在这里插入图片描述


常见的包

  1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
  2. java.net:进行网络编程开发包。
  3. java.sql:进行数据库开发的支持包。
  4. java.util:是java提供的工具程序包。(集合类等) 非常重要

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

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

相关文章

宏病毒的实践

一、实验目的: 1、了解梅丽莎宏病毒基本概念 2、自己实验梅丽莎宏病毒 二、预备知识: 1.什么是word宏 宏是一个批处理程序命令,正确地运用它可以提高工作效率。微软的office软件运行用户自己编写,叫VBA的脚本来增加其灵活性&…

12. 登录拦截器

由于论坛中的所有功能接口都需要在用户登录的情况下才能访问,所以要做统一的登录身份校验。 1. 在 interceptor 包下创建 LoginInterceptor Component // 交给 Spring 管理 public class LoginInterceptor implements HandlerInterceptor {// 从配置文件中读取配…

ChatGPT和Claude的能力全测评

创造性思维/语言 提示:“写一首 4 行诗,每行只有 3 个词,描写重庆” ChatGPT写诗👇 Claude写诗👇 仁者见仁,您怎么看谁更强? 提示: "如果你随机选择这个问题的答案,…

postgresql 的递归查询

postgresql 的递归查询功能很强大,可以实现传统 sql 无法实现的事情。那递归查询的执行逻辑是什么呢?在递归查询中,我们一般会用到 union 或者 union all,他们两者之间的区别是什么呢? 递归查询的执行逻辑 递归查询的…

⛳ TCP 协议面试题

目录 ⛳ TCP 协议面试题🐾 一、为什么关闭连接的需要四次挥⼿,⽽建⽴连接却只要三次握⼿呢?🏭 二、为什么连接建⽴的时候是三次握⼿,可以改成两次握⼿吗?👣 三、为什么主动断开⽅在TIME-WAIT状态…

shell 简单且常用的几种

目录 一、配置环境的shell脚本 二、系统资源脚本 一、要求 二、脚本内容 三、脚本解析 四、赋权并验证 一、配置环境的shell脚本 systemctl stop firewalld systemctl disable firewalld systemctl stop NetworkManager systemctl disable NetworkManager setenforce…

动物IT

动物是地球上最丰富和多样化的生物群体之一。它们包括鱼类、鸟类、爬行动物、两栖动物和哺乳动物等各种类型。动物在地球上有着不同的生态角色和生活习性。 动物对于维持生态平衡和生态系统的稳定性至关重要。它们在食物链中扮演着重要的角色,通过捕食和被捕食来保…

【李沐】3.5、softmax回归的从0开始实现

注意: 把每个像素位置看作⼀个特征 # 导入PyTorch库 import torch # 从IPython库中导入display模块,用于在交互式环境中显示内容 from IPython import display # 从d2l.torch模块中导入torch作为d2l的别名,方便后续使用d2l库中的功能 from d…

阿里云轻量应用服务器和云服务器有什么区别?2023更新

阿里云轻量应用服务器和云服务器ECS有什么区别?ECS是专业级云服务器,轻量应用服务器是轻量级服务器,轻量服务器使用门槛更低,适合个人开发者或中小企业新手使用,可视化运维,云服务器ECS适合集群类、高可用、…

ForkJoin框架

1. ForkJoin框架概述 ForkJoin模式先把一个大任务分解成许多个独立的子任务,然后开启多个线程并行去处理这些子任务。有可能子任务还是很大而需要进一步分解,最终得到足够小的任务。ForkJoin模式的任务分解和执行过程大致如下图所示。 ForkJoin模式借助…

NSS [CISCN 2019初赛]Love Math

NSS [CISCN 2019初赛]Love Math 开题直接给源码 <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {die("…

差值结构的复合底部

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由6张二值化的图片组成&#xff0c;让A 中有3个点&#xff0c;B中有1个点&#xff0c;且不重合&#xff0c;统计迭代次数并排序。 其中有20组数据 让迭代次数与排斥能成反比&#xff0c;排…

1、Spring_IOC

IOC 1.概述 IOC&#xff1a;Inversion of Control 控制反转&#xff0c;可以让容器负责对象的创建以及销毁操作&#xff0c;对象在容器中叫 bean 2.回顾问题 问题&#xff1a;写了太多与业务无关的代码 耦合度非常高&#xff0c;写了很多和业务无关的代码不利于项目的升级迭…

分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测

分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测 目录 分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 分类预测 | MATLAB实现S4VM半监督支持向量机二分类预测 程序设计 完整源码和数据获取方式&#xff1a; …

高级产品经理如何以不同的方式应对挑战

我经常被问到产品经理如何晋升到更高级别。事实上&#xff0c;获得晋升往往是一场复杂的游戏。是的&#xff0c;你的技能和成就很重要&#xff0c;但其他因素也很重要&#xff0c;比如你的经理对人才培养的关心程度、你的同事有多优秀、任期有多长、公司的政治氛围如何等等。 所…

TCP编程流程(补充)

目录 1、listen&#xff1a; 2、listen、tcp三次握手 3、 发送缓冲区和接收缓冲区&#xff1a; 4、tcp编程启用多线程 1、listen&#xff1a; 执行listen会创建一个监听队列 listen(sockfd,5) 2、listen、tcp三次握手 三次握手 3、 发送缓冲区和接收缓冲区&#xff1a;…

【深入探究人工智能】:常见机器学习算法总结

文章目录 1、前言1.1 机器学习算法的两步骤1.2 机器学习算法分类 2、逻辑回归算法2.1 逻辑函数2.2 逻辑回归可以用于多类分类2.3 逻辑回归中的系数 3、线性回归算法3.1 线性回归的假设3.2 确定线性回归模型的拟合优度3.3线性回归中的异常值处理 4、支持向量机&#xff08;SVM&a…

Linux的热拔插UDEV机制

文章目录 UDEV简介守护进程基本特点 守护进程和后台进程的区别开发守护进程结束 UDEV简介 udev是一个设备管理工具&#xff0c;udev以守护进程的形式运行&#xff0c;通过侦听内核发出来的uevent来管理/dev目录下的设备文件。 udev在用户空间运行&#xff0c;而不在内核空间 …

⛳ Java 网络编程

目录 ⛳ Java 网络编程&#x1f3a8; 一、TCP / IP 协议&#x1f463; 二、IP 和 端口号&#x1f381; 三、TCP 网络层编程&#x1f3a8; 3.1、Socket⭐ 3.2、基于Socket的TCP编程 &#x1f3ed; 四、UDP网络编程&#x1f43e; 五、URL编程 ⛳ Java 网络编程 &#x1f3a8; 一…

语法篇--XML数据传输格式

一、XML概述 1.1简介 XML&#xff0c;全称为Extensible Markup Language&#xff0c;即可扩展标记语言&#xff0c;是一种用于存储和传输数据的文本格式。它是由W3C&#xff08;万维网联盟&#xff09;推荐的标准&#xff0c;广泛应用于各种系统中&#xff0c;如Web服务、数据…