类对象

一、类初识

类:表示一种事物所具有的共同特征和行为
对象:一个类的实例

如下图,通过狗这个类进行详解
在这里插入图片描述
这是一个Dog类
对象:斗牛犬、小猎犬、牧羊犬
类中的属性:breed(品种)、size(大小)、color(颜色)、age(年龄)、
类中的方法:eat()、run()、sleep()、name()

二、类和类的实例化

2.1声明一个类

Java中使用关键字class声明一个类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.一个源文件可以有若干个普通类,即(class)声明的类
3.类的命名:采用大驼峰命名法,每个单词的首字母要大写
如:Person、ChinaPerson

2.2类的实例化

类就是一类对象的统称。对象就是这一类具体化的一个实例。
定义一个类只是规定了一类对象所具备的属性和行为(模板)。
有了类,可以根据类产生对象(类的实例化)。
一个模板可以实例化多个对象,也就是一个类可以产生多个对象。
用关键字new来产生对象
在这里插入图片描述

三、类详解

3.1成员变量

类中的属性成为成员变量

1.如何通过对象来使用类中的属性?
使用"."操作符
在这里插入图片描述
2.属性的默认值?
基本数据类型,默认值为0
引用数据类型,默认值为null

类中的成员变量(定义在类中的属性)与对象有关,当有对象产生时,才会开辟内存、分配空间。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当不使用字段的默认值时,可以就地进行初始化
在这里插入图片描述

3.2成员方法

类中的方法称为成员方法


//声明Person类
class Person{
    //属性
    String name;
    int age;

    void show(){
        System.out.println("My name is:"+name+",My age is:"+age);
    }
}


//主类
public class Test {
    public static void main(String[] args) {
        Person per = new Person();
        Person per1 = new Person();
        per.name = "zs";
        per.age = 15;
        per1.name = "ls";
        per1.age = 18;

        per.show();
        per1.show();
    }
}

在这里插入图片描述

3.3 static关键字

1.修饰变量(类属性)
2.修饰方法(类方法)
3.修饰代码块(静态块)

3.3.1类属性(静态变量)

当一个类中的属性,该类所有对象值都相同,此时这个属性不再与具体对象相关,而与所在类相关,属性使用static修饰,表示类属性。
所有的静态变量在JVM方法区中存储
在这里插入图片描述
在这里插入图片描述
上面代码的内存空间的划分:
方法区存储所有静态变量(类属性)和常量在这里插入图片描述

  1. static修饰的变量称之为类的静态变量或者类属性,直接使用类名称来访问,不推荐使用对象访问。
    在这里插入图片描述
    2.在Java中static关键字不可能出现在方法中
    在这里插入图片描述
    3.常量:final关键字修饰,定义时必须初始化并且之后无法修改。一般情况下,final搭配static使用
    在这里插入图片描述

常量的命名规则:所有单词全部大写并且每个单词间以下划线分隔,如:SCHOOLE_NAME

3.3.2 类方法(静态方法)

类中使用static修饰的方法成为类方法,与对象无关
类方法使用类直接调用

class Person{
    //成员变量(实例变量)
    String name;
    int age;
    //静态方法(类方法)
    static String country = "中国";
    //成员方法(实例方法)
    void show(){
        System.out.println("My name is:"+name+",My age is:"+age);
    }
    //静态方法(类方法)
    static void printCountry(){
        System.out.println("Person country is:"+country);
    }
}

//主类
public class Test {
    public static void main(String[] args) {
        //调用show方法必须要有对象
        Person person = new Person();
        person.show();
        //调用printCountry方法,直接使用Person类调用
        Person.printCountry();
    }
}

在成员方法中能调用静态方法,但在静态方法中不可以调用成员方法。因为成员方法需要对象才能使用,而静态方法不需要。

3.4.getter和setter方法

当类中的字段被private修饰之后,这时候就必须使用getter和setter方法。
在这里插入图片描述
当属性被private修饰后,类的外部(调用者)需要使用该属性,则需要类提供对外的getter(取得属性值)和setter(设置属性值)方法。

3.5构造方法

构造方法是一类特殊的方法,使用关键字new实例化新对象时会被自动调用,用于完成初始化操作。
语法:
public 类名称(参数…){ }
是没有返回值声明

1.若类中没有提供构造方法,编译器会自动生成一个无参构造
在这里插入图片描述
2.若自定义了构造方法,则系统不再会生成无参构造
在这里插入图片描述
3.构造方法存在重载
重载的定义:在同一个类中,定义了若干方法名称相同,只是参数的个数或者类型不同。
下面自定义的无参构造和带有两个参数的构造方法刚好形成了重载。
在这里插入图片描述

3.5.1 构造方法的调用

一个类产生对象的两个阶段:
1.为对象分配空间new
2.编译器调用构造方法来进行对象的初始化操作

3.6 this关键字

3.6.1 this修饰属性

this修饰成员变量,表示直接使用类中的成员变量
在这里插入图片描述
在这里插入图片描述
明明已经赋值但结果却显示为空,这是因为编译器的
就近匹配原则
此时因为成员变量的命名和方法形参的命名一致,由于就近匹配原则,此时name=name实际上是形参自己=自己,根本没有修改成员变量的值。

而使用this修饰成员变量可以打破就近匹配原则
使用this.属性名直接调用类中的成员变量
在这里插入图片描述
在这里插入图片描述

3.6.2 this修饰方法

3.6.2.1 this调用类中的成员方法

this.方法名
在这里插入图片描述

3.6.2.2 this调用构造方法

1.语法:this(构造方法参数列表)
在这里插入图片描述
2.当在构造方法中调用其他构造方法,此时该语句必须写在构造方法首行。
在这里插入图片描述
3.构造方法的相互调用不能成环,必须线性调用
在这里插入图片描述

3.7代码块

使用{}括起来的就称为代码块,根据代码块出现的位置和修饰符进行以下划分:

3.7.1普通代码块(了解就成)

定义在方法中,使用{}的代码称为普通代码块
在这里插入图片描述
只在{}区域内生效,出了代码块就会被销毁。

3.7.2构造块

定义在类中,直接使用{}括起来的代码称为构造块
在这里插入图片描述
在这里插入图片描述
构造块优先于构造方法执行,并且有几个对象产生,构造代码块就执行几次。

3.7.3静态块

定义在类中,使用static关键字修饰的代码块,成为静态块。
在这里插入图片描述
在这里插入图片描述

静态块优先于构造块执行,与对象无关,在类加载时调用,并且当该类被加载后,只调用一次。

3.8 toString方法

当引用数据类型直接使用println输出时,实际上println调用的就是该类的toString方法()
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安全常见基础名词概念

一、域名 1、域名:相当网站的名字,互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。 2、网域名系统(Domain Name System)有时也简称为域名(DNS),是互…

探索【Stable-Diffusion WEBUI】的插件:骨骼姿态(OpenPose)

文章目录 (零)前言(一)骨骼姿态(OpenPose)系列插件(二)插件:PoseX(三)插件:Depth Lib(四)插件:3D …

响应式开发(HTML5CSS3)实现媒体查询的功能案例

目录 前言 一、媒体查询知识点 二、实现功能的尺寸 三、代码部分 1.不带嵌套的媒体查询功能 1.1.代码段 1.2.运行结果 2.带嵌套的媒体查询功能 2.1.代码段 2.2.运行结果 2.2.3视频效果 前言 1.本文讲解的响应式开发技术(HTML5CSS3Bootstrap&#xff09…

Auto-GPT免费尝鲜之初体验-使用攻略和总结

Auto-GPT免费尝鲜之初体验-使用攻略和总结 写在前面的废话一、部署 Auto-GPT二、试运行 Auto-GPT三、我踩过的坑四、后续探索 写在前面的废话 ChatGPT 的交互模式,是和一个 “人” 对话聊天。 如果你想了解更多ChatGPT和AI绘画的相关知识,请参考&#…

ArcGIS Pro用户界面

目录 1 功能区 1.1 快速访问工具栏 1.2 自定义快速访问工具栏 1.3 自定义功能区选项 1.3.1 添加组和命令 1.3.2 添加新选项卡 2 视图 3 用户界面排列 ​编辑 4 窗格 4.1 内容窗格 4.2 目录窗格 4.3 目录视图(类似ArcCatalog) 4.4 浏览对话框…

python:面向对象编程(知识点+代码)

文章目录 一、类和对象1、对象属性的默认值设置2、对象属性的添加、修改与删除3 、类属性 二、类的继承 引言:面向对象编程时一门编程语言重要的功能,我们之前所学的 c,java都为面向对象编程语言,这里给大家拓展一下,…

什么是CDN加速?CDN加速有哪些作用?

一、什么是 CDN CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是在现有 Internet 基础上增加一层新的网络架构,通过部署边缘服务器,采用负载均衡、内容分发、调度等功能,使用户可以就近访问获取所需内容&#xff…

多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测

多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测 目录 多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-CNN-…

2023年报考CSM敏捷教练认证好不好?含金量高吗?

CSM,Certified Scrum Master,是Scrum联盟发起的Scrum认证。帮助个人从自身、团队和组织层面,学习技能和工具来扩展实践的层面,帮助团队正确使用Scrum,从而提高项目整体成功的可能性。 认证收益 职业能力提升 推动企业…

图神经网络能做什么?

从概念上讲,我们可以将图神经网络的基本学习任务分为 5 个不同的方向: (1)图神 经网络方法; (2)图神经网络的理论理解; (3)图神经网络的可扩展性&#xff1b…

VLAN基础实验

实验要求: 1、PC1和PC3所在接口为Access接口 PC2/4/5/6处于同一网段:其中PC2可以访问PC4/5/6 PC4可以访问PC5,但不能访问PC6 PC5不能访问PC6 2、PC1/3与PC2/4/5/6不再同一网段 3、所有PC通过DHCP获取IP地址,且PC1/3可以正常访问PC2/4/5/6 实…

jenkins——环境变量、节点配置以及节点环境变量的使用

这里写目录标题 一、Jenkins 环境变量1、环境变量分类a、系统内置环境变量b、用户自定义环境变量 2、环境变量的使用3、控制台输出 二、Jenkins 节点配置1、Jenkins的常用节点2、准备工作3、SSH类节点配置4、Java web节点配置5、Java web节点配置详细步骤 三、Jenkins 节点环境…

操作系统八股文知识点汇总

1. 程序编译过程 gcc HelloWorld.c -E -o HelloWorld.i 预处理:加入头文件,替换宏。gcc HelloWorld.c -S -c -o HelloWorld.s 编译:包含预处理,将 C 程序转换成汇编程序。gcc HelloWorld.c -c -o HelloWorld.o 汇编:包…

GEE遥感云大数据在林业中的应用

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

boot-admin整合Quartz实现动态管理定时任务

淄博烧烤爆红出了圈,当你坐在八大局的烧烤摊,面前是火炉、烤串、小饼和蘸料,音乐响起,啤酒倒满,烧烤灵魂的party即将开场的时候,你系统中的Scheduler(调试器),也自动根据…

【操作系统】第一章

文章目录 🌷 一、操作系统的概念1、定义2、功能 和 目标 🌷 二、操作系统的特征1、**并发**2、 **共享**3、 **虚拟**4、 **不确定性** 🌷 三、操作系统的发展与分类1、 手工操作阶段2、 批处理阶段3、 分时操作系统4、 实时操作系统5、 网络…

【移动端网页布局】移动端网页布局基础概念 ④ ( 物理像素 | 物理像素比 | 代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 )

文章目录 一、物理像素 / 物理像素比二、代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 一、物理像素 / 物理像素比 移动端 网页开发 与 PC 端开发有很多不同之处 , 在图片处理方向需要采用 二倍图 / 三倍图 / 多倍图 方式进行图片处理 ; 图片处理的方式与如下的 物…

4月26号软件更新资讯合集....

Tpflow V7.0.2,PHP 工作流引擎新版发布 ​欢迎使用 Tpflow V7.0.1 工作流引擎 TpFlow 工作流引擎是一套规范化的流程管理系统,基于业务而驱动系统生命力的一套引擎。彻底释放整个信息管理系统的的活力,让系统更具可用性,智能应用型…

一文学会VSCode代码同步至GitHub

一、上手GitHub 1. 了解GitHub 上手GItHub之前首先要了解一下GItHub的关键词,如下: (1) 仓库 (Repository) 仓库是用来存放项目代码,每一项目对应一个仓库。(2) 收藏 (Star) 收藏别人的仓库,方便自己查找。(3) 复制/克隆项目 (…

数据库基础篇 《12.MySQL数据类型精讲》

目录 1. MySQL中的数据类型 2. 整数类型 2.1 类型介绍 2.2 可选属性 2.2.1 M 2.2.2 UNSIGNED 2.2.3 ZEROFILL 2.3 适用场景 2.4 如何选择? 3. 浮点类型 3.1 类型介绍 3.2 数据精度说明 ​编辑 3.3 精度误差说明 4. 定点数类型 4.1 类型介绍 4.2 开发中…