关于java类与对象的创建

关于java类与对象的创建

我们在前面的文章中回顾了方法的定义和方法的调用,以及了解了面向对象的初步认识,我们本篇文章来了解一下类和对象的关系,还是遵循结合现实的方式去理解,不是死记硬背😀。

1、类

  • 类是一种抽象的数据类型,它对某一类事物整体描述定义,但是不能代表某一个具体的事物。
  • 比如,动物,植物,家具,手机,电脑等。
  • 比如,Person类(人类),Car类(汽车类),这些都是用来描述或者定义某一类具体的事物应该具备的特点和行为。

2、对象

  • 对象是抽象概念的具体实例。
  • 比如,张三,就是一个人类的具体实例,张三家里的桌子,就是家具类的具体实例。
  • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。

3、创建与初始化对象

  • 使用new关键字进行创建对象。

  • 使用new关键字的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中的构造器的调用。

  • 我们直接用代码进行展示🤔

1、首先,程序中只允许存在一个main方法,我们可以新建一个包,然后新建一个类用于程序入口,其他的类里面,就不去写main方法了,这个在以后的代码编写中也要注意,要养成习惯。

在这里插入图片描述

2、我们在Application中,写我们最熟悉的main方法。

package oop.Demo02;
//一个项目应该只存在一个main方法。
public class Application {public static void main(String[] args) {}
}

3、然后我们再创建一个Student类,学生类,我们在这个类里面写属性和方法,一个类中,只能存在属性和方法!!!

package oop.Demo02;
//学生类
public class Student {//属性,字段String name;int age;//方法public void study(){System.out.println(this.name+"正在学习");//this代表,当前类}
}

4、我们将Student类实例化,要在main方法中。

package oop.Demo02;public class Application {public static void main(String[] args) {//类:抽象的,进行实例化//类实例化后,会返回一个自己的对象。//student对象,就是一个Student类的具体实例!Student student = new Student();Student xiaoming = new Student();Student xiaohong = new Student();}
}

我们在创建对象的时候,会看到Student student = new Student();,可以写出new.Student().var,然后回车就可以自动带出对象名字,对象名字是可以更改的,就像后边写出的,小明和小红,都是具体的人。

同一个类,可以产生出不同的对象,就像小明和小红,但是他们都具备共同的特性,就是名字和年龄,也叫做共同的属性。

5、我们来打印一下小明这个对象的名字和年龄。

package oop.Demo02;public class Application {public static void main(String[] args) {Student xiaoming = new Student();Student xiaohong = new Student();System.out.println(xiaoming.name+"\n"+xiaoming.age);}
}

我们执行一下代码,可以发现,输出的是null。

null
0进程结束......

所以,我们可以知道,名字这个属性没有赋值,默认值就是空(null),年龄是int类型,没有赋值,默认值是0。

6、我们要给小明的名字和年龄进行赋值,但是切记,不要在类的属性后边赋值,否则创建的所有对象的名字都叫一个名字了!!

下面给大家带来错误示范!!!

package oop.Demo02;
//学生类
public class Student {//属性,字段String name="小明";//除非是某些字段要求就是默认值,否则在这里赋值所有创建的对象初始值都是一样的!int age;//方法public void study(){System.out.println(this.name+"正在学习");//this代表,当前类}
}

下面给大家带来正确示范

package oop.Demo02;public class Application {public static void main(String[] args) {Student xiaoming = new Student();Student xiaohong = new Student();xiaoming.name="小明";xiaoming.age=10;System.out.println(xiaoming.name+"\n"+xiaoming.age);}
}

我们执行一下代码,可以发现,输出的是我们所赋的值。

小明
10进程结束.....

我们刚刚只是给xiaoming赋值了,但是没有给xiaohong赋值,所以我们可以输出一下小红,看看是不是没有值。

package oop.Demo02;public class Application {public static void main(String[] args) {Student xiaoming = new Student();Student xiaohong = new Student();xiaoming.name="小明";xiaoming.age=10;System.out.println(xiaoming.name+"\n"+xiaoming.age);System.out.println(xiaohong.name+"\n"+xiaohong.age);}
}

我们执行一下代码。

小明
10
null
0进程结束.....

我们在给小红赋值一下😀

public class Application {public static void main(String[] args) {Student xiaoming = new Student();Student xiaohong = new Student();xiaoming.name="小明";xiaoming.age=10;xiaohong.name="小红";xiaohong.age=10;System.out.println(xiaoming.name+"\n"+xiaoming.age);System.out.println(xiaohong.name+"\n"+xiaohong.age);}
}

我们执行一下代码。

小明
10
小红
10进程结束.....

所以我们可以发现,类就有点像一个模板,我们可以通过赋值,来创建不同的对象,如果把世界想象成一个程序的话,所有人都是一个模板,People类,每个人有每个人的身高,体重,年龄,国家,职业,性格,星座等。

面向对象编程的本质:以类的方式组织代码,以对象的组织数据

7、我们刚刚在类中创建了一个方法,我们直接调用一下。

    public void study(){System.out.println(this.name+"正在学习");//this代表,当前类}
public class Application {public static void main(String[] args) {Student xiaoming = new Student();Student xiaohong = new Student();xiaoming.name="小明";xiaoming.age=10;xiaoming.study();//System.out.println(xiaohong.name+"\n"+xiaohong.age);}
}

我们执行一下代码。

小明正在学习进程结束.....

4、人生建议

学习编程的好处,就是可以对世界进行更改的建模,模块化,抽象化,但是不要做一个宅男宅女!要多去体验生活,工作不是生活的全部,赚钱也不是生活的全部,我们要尽可能的让生活变的丰富多彩,不断的提升自己的认知,眼界,一定要有自己喜欢的事情去做(本人就非常喜欢画画,美术方面的东西😊),人所热爱的便是生活!

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

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

相关文章

【InternLM 大模型实战】第五课

LMDeploy 大模型量化部署实践 大模型部署背景模型部署定义:产品形态计算设备 大模型特点内存开销巨大动态shape相对视觉模型,LLM结构简单 大模型部署挑战设备推理服务 大模型部署方案技术点方案云端移动端 LMDeploy 简介高效推理引擎完备易用的工具链支持…

环境配置注解 @PostConstruct作用以及在springboot框架中的加载时间

作用 PostConstruct 是 Java EE 5 引入的一个注解,用于 Spring 框架中。它标记在方法上,以表示该方法应该在对象的依赖注入完成后,并且在类的任何业务方法被调用之前执行。这个注解的主要用途是进行一些初始化工作。需要注意的是:…

统计学-R语言-4.5

文章目录 前言多变量数据多维列联表复式条形图并列箱线图R语言中取整运算主要包括以下五种: 点带图多变量散点图重叠散点图矩阵式散点图 练习 前言 本篇文章将继续对数据的类型做介绍,本片也是最后一个介绍数据的。 多变量数据 掌握描述多变量数据的分…

CDN内容分发网络

1、CDN的含义 1.1 什么是CDN? CDN是内容分发网络(Content Delivery Network)的缩写。它是一种通过将内容部署到全球各地的服务器节点,使用户能够快速访问和下载内容的网络架构。 简单来说,CDN通过将内容分发到离用户更…

Redis-redis.conf配置文件中的RDB与AOF持久化方式的详解与区别

RDB(Redis Database) RDB是Redis的默认持久化方式,它将内存中的数据以二进制格式写入磁盘,形成一个快照。RDB持久化有以下几个重要的配置选项: save:指定了保存RDB的策略,默认的配置是每900秒&…

SpringCloud:Gateway服务网关

文章目录 Gateway服务网关快速入门断言工厂默认过滤器自定义过滤器过滤器执行顺序跨域问题处理 Gateway服务网关 网关(Gateway)是将两个使用不同协议的网络段连接在一起的设备。 网关的作用就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换…

案例123:基于微信小程序的在线订餐系统的设计与实现

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder …

CSS 雷达监测效果

<template><view class="center"><view class="loader"><view></view></view></view></template><script></script><style>/* 设置整个页面的背景颜色为深灰色 */body {background-col…

Zookeeper使用详解

介绍 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布…

1127: 矩阵乘积

题目描述 计算两个矩阵A和B的乘积。 输入 第一行三个正整数m、p和n&#xff0c;0<m,n,p<10&#xff0c;表示矩阵A是m行p列&#xff0c;矩阵B是p行n列&#xff1b; 接下来的m行是矩阵A的内容&#xff0c;每行p个整数&#xff0c;用空格隔开&#xff1b; 最后的p行是矩…

SpringFramework实战指南(一)

SpringFramework实战指南&#xff08;一&#xff09; 一、技术体系结构1.1 总体技术体系1.2 框架概念和理解 一、技术体系结构 1.1 总体技术体系 单一架构 一个项目&#xff0c;一个工程&#xff0c;导出为一个war包&#xff0c;在一个Tomcat上运行。也叫all in one。 单一架…

Kubernetes (十二) 存储——Volumes配置管理

一. 卷的概念 官方地址&#xff1a;卷 | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/storage/volumes/ 二. 卷的类型及使用 …

前端性能优化之数据存取,存储以及缓存技术

无论是哪种计算机语言&#xff0c;说到底它们都是对数据的存取与处理。若能在处理数据前&#xff0c;更快地读取数据&#xff0c;那么必然会对程序执行性能产生积极的作用。 一般而言&#xff0c;js的数据存取有4种方式。 直接字面量:字面量不存储在特定位置也不需要索引&…

spring基于XML方式的组件管理

基本介绍 依赖注入是一种处理对象间依赖关系的技术。在Spring中&#xff0c;依赖注入有构造方法注入和设值注入两种方式。 设值注入是将依赖作为成员变量&#xff0c;通过主调类的setter方法注入依赖。构造方法注入则是在Bean的构造方法中注入依赖。 本次我们将通过具体例子来…

CSC8021_computer network_The Transport Layer

Role of the transport layer • The transport layer is responsible for providing a reliable end-to-end connection between two application processes in a network • Abstracting away the physical subnet • Does not involve intermediate nodes • Takes a netwo…

UML-通信图和交互概览图(通信图和顺序图的区别与联系)

UML-通信图和交互概览图&#xff08;通信图和顺序图的区别与联系&#xff09; 一、通信图简介1.消息2.链接 二、通信图和[顺序图](https://blog.csdn.net/weixin_65032328/article/details/135587782)的联系与区别三、交互概览图四、顺序图转化为通信图练习 一、通信图简介 通…

2.2 物理层

2.2 物理层 2.2.1 物理层的基本概念 1、物理层主要解决在各种传输媒体上传输比特0和1的问题&#xff0c;进而给数据链路层提供透明传输比特流的服务 2、由于传输媒体的种类太多&#xff08;例如同轴电缆、光纤、无线电波等&#xff09;&#xff0c;物理连接方式也有很多例如…

libcurl开源库的编译与使用全攻略

libcurl简介 libcurl 是一个广泛使用的、支持多种协议的、开源的客户端URL传输库&#xff0c;提供了许多用于数据传输的API&#xff0c;例如文件传输、FTP、HTTP、HTTPS、SMTP等。libcurl 的主要特点包括 支持多种协议&#xff1a;libcurl 支持多种协议&#xff0c;如 HTTP、F…

Spring集成

目录 概述1 声朋一个简单的集成流1.1 使用XML定义集成流1.2 使用Java配置集成流1.3 使用Spring lntegration 的 DSL 配置 2 Spring integration 功能概览2.1 消息通道2.2 过滤器2.3 转换器2.4 路由器2.5 切分器2.6 服务激活器2.7 网关2.8 通道适配器2.9 端点模块 概述 就像我们…

JDK8-JDK17版本升级

局部变量类型推断 switch表达式 文本块 Records 记录Records是添加到 Java 14 的一项新功能。它允许你创建用于存储数据的类。它类似于 POJO 类&#xff0c;但代码少得多&#xff1b;大多数开发人员使用 Lombok 生成 POJO 类&#xff0c;但是有了记录&#xff0c;你就不需要使…