JAVA类和对象

如何创建类

⚠Java当中一切皆对象

⚠如何描述对象?用类。

我们可以类当成一个模板,用来描述对象特征,行为等等

//自定义的类型 -> 你定义的一个 Java当中 没有的类型
class PetDog {public String name;//名字public String color;//颜色// 狗的属性public void barks() {System.out.println(name + ": 旺旺旺~~~");}// 狗的行为public void wag() {System.out.println(name + ": 摇尾巴~~~");}
}

如何修改文件内类的名称

 

因为这样不方便更改类的名称 

类的实例化

定义了一个类,就相当于在计算机中定义了一种新的类型 ,与 int double 类似,只不过 int double java 语言自 带的内置类型,而类是用户自定义了一个新的类型,比如上述的:PetDog 类。它是类 ( 一种新定义的类型) 有了这些自定义的类型之后,就可以使用这些类来定义实例 ( 或者称为对象 )
用类类型创建对象的过程,称为类的实例化 ,在 java 中采用 new 关键字,配合类名来实例化对象。

实例化出来的东西就是一个真正的实体

    public static void main(String[] args) {//通过new 关键字 可以实例化 多个对象//任何变量在使用的时候是已经被赋值的//.用来访问对象的属性或者方法PetDog petDog1 = new PetDog();petDog1.name = "feifei";petDog1.color = "红色";System.out.println(petDog1.name);System.out.println(petDog1.color);petDog1.barks();petDog1.wag();System.out.println("=============");PetDog petDog2 = new PetDog();petDog2.name = "花花";petDog2.color = "灰色";petDog2.barks();petDog2.wag();System.out.println(petDog2.name);System.out.println(petDog2.color);}

 new petdog1和2相当于开辟两块内存

this关键字

作用一

public class Date {public int year;public int month;public int day;public void setDate(int y, int m, int d){year = y;month = m;day = d;}public static void main(String[] args) {Date date = new Date();date.setDate(1999,1,1);}
}

 

但是如果再创建一个新的日期,同样调用这个方法,那么问题来了,你怎么知道是给哪个对象调用的方法呢? 

Date date2 = new Date();
date2.setDate(1989,11,11);

 其实系统是知道的

这里的this用来判断是哪个date来调用这个方法 

这里的year,month,day其实是

this.year = y;
this.month = m;
this.day = d;

作用二

设计另一个setDate和print方法

    public void setDate(int year, int month, int day){year = year;month = month;day = day;}public void print(){System.out.println("year: " + year + "month: " + month + "day: " + day);}

在调用这些方法的时候发现打印结果全都是0???

在setDate方法里面,形参和成员变量相同,由于局部变量优先原则,形参给形参自己赋值了,相当于什么都没赋,打印出来的就是int形式的null也就是0

修改setDate方法,在每个形参前面加一个this指向当前对象。

 

所以当我们的形参变量和成员变量一样的时候,要在形参前面加一个this

所以尽量使用this,一定错不了

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

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

相关文章

leecode 数据库:1158. 市场分析 I

数据导入: SQL Schema: Create table If Not Exists Users (user_id int, join_date date, favorite_brand varchar(10)); Create table If Not Exists Orders (order_id int, order_date date, item_id int, buyer_id int, seller_id int); Create tab…

数学建模:主成分分析法

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 主成分分析法 算法流程 构建原始数据矩阵 X X X ,其中矩阵的形状为 x ∗ n x * n x∗n ,有 m m m 个对象, n n n 个评价指标。然后进行矩阵的归一化处理。首先计算矩…

vue3 组合式api中 ref 和$parent 的使用

ref 的使用 vue3中, 在 组件中添加一个 component ref“xxx” ,就可以在父组件中得到 子组件的 dom 对象, 以及 虚拟的 dom 对象, 有了虚拟 dom, 我们就可以在父组件中控制子组件的显示了 ref 的使用方法 vue3中ref 的特点 以上…

给设计团队管理者的6个建议优漫动游

即使以前从未担任过领导职务,作为一名设计师,你也已经习惯了仔细地考虑用户体验,这一技能在你领导团队时也会很有用。你需要设计一个环境和结构来使你的成员们完成最好的工作,让公司和用户都能受益。一本名为《DesignLeadershipHa…

删除、移动、复制文件时总是要卡在99%一段时间解决方法

Win10文件夹重命名、移动、删除等操作卡顿3-5秒。 原因分析: 查看发现,卡顿期间资源管理器无响应,并且其高度占用CPU资源,但是对于非文件夹文件操作没有问题。 解决方案: 1、双击“此电脑”,选择“查看”,再选择“选…

DockerCompose常用命令

DockerCompose常用命令 在上一篇博客中,我们对DockerCompose有了一个初步的认识,以及介绍了多种安装方式,本文继续介绍DockerCompose的常用命令。 DockerCompose中常常用到两个术语,一个是服务,一个是项目。服务常常代…

Redis面试题大全含答案

1.什么是Redis? 答:Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value&…

三、mycat分库分表

第五章 分库分表 一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业 务将表进行分类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同 的库上面,如下图: 系统被切分成了&…

常静相伴:深度解析C++中的const与static关键字

个人主页:北海 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C/C🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!&#x1f9…

时间切片

1. 下次绘制交互 (INP) 下次绘制交互 (INP) 是一项新的指标,浏览器计划于 2024 年 3 月将其取代取代首次输入延迟 (FID) ,成为最新的 Web Core Vitals(Web 核心性能指标)。 2. 时间切片-scheduler.yield 背景:用户任务完成自动释放控制权给主…

打怪(easy)

B-打怪(easy)_第二十届同济大学程序设计竞赛(同步赛) (nowcoder.com) 问题描述:初始攻击是1,防御是0,血量无穷。怪物防御力永远为0,只有初始血量和攻击力。双方每次受到的攻击会掉对手攻击-自己防御的血量…

[golang 流媒体在线直播系统] 1.直播的简单介绍以及借助腾讯云直播实现在线直播

一.直播的简单介绍 1.介绍 直播,应该不陌生,有电视直播、网络主播、游戏直播、体育直播、在线教育直播等等,那么要实现在线直播的话就 必须要有 “ 流媒体在线直播服务器 ”. “流媒体在线直播服务器 ”不仅可以 实现游戏、赛事、电商、媒体、教育等行业的直播, 还可以实现 …

java八股文面试[多线程]——并发三大特性 原子 可见 顺序

AutomicInteger : volatile CAS 总线LOCK MESI 两个协议 TODO volatile的可见性和禁止重排序是怎么实现的: DCL场景: new操作会在字节码层面生成两个步骤: 分配内存、调用构造器 然后把引用赋值给singleton 不加volatile则会发生指令重…

Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

ssm+vue乐购游戏商城系统源码和论文

ssmvue乐购游戏商城系统源码和论文115 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 随着社会的发展,游戏品种越来越多,计算机的优势和普及使得乐购游戏商城系统的开发成为必需…

mysql 表备份 遇到的问题 【全网最全】

目录 省流: 正文: 1、报错 2、原因 3、解决方法 方法一:关闭 ENFORCE_GTID_CONSISTENCY (不推荐): 方法二(推荐): 4、开启关闭GTID 省流: 不推荐如…

Databricks 入门之sql(二)常用函数

1.类型转换函数 使用CAST函数转换数据类型(可以起别名) SELECTrating,CAST(timeRecorded as timestamp) FROMmovieRatings; 支持的数据类型有: BIGINT、BINARY、BOOLEAN、DATE 、DECIMAL(p,s)、 DOUBLE、 FLOAT、 INT、 INTERVAL interva…

SpringBatch简述

前言 ​ 如今微服务架构应用增多,但在企业里还存在海量数据的批处理场景。诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理。而常见处理方案有: 1、数据脚本跑批 2、批处理框架 3、多线程事务处理方案。 ​ 在满足基本功能之外…

自智网络简介

网络随着业务和流量的发展,已经变的无比复杂,很难通过人力管理,因此业界提出了自智网络(自动驾驶网络)的概念。普林斯顿大学的Nick Feamster和Jennifer Rexford在本文中探讨了为什么网络需要自动化,以及达成这一目标的路径。原文:…

自制centos7.9的wsl发行版

自制centos7.9的wsl发行版 参考:https://zhuanlan.zhihu.com/p/482538727 Windows10提供了一个wsl工具用于直接在windows上运行Linux子系统。 CentOS国内镜像下载:https://mirrors.aliyun.com/centos/ 这里选择了7.9.2009版本:https://mirr…