关于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…

leetcode - 934. Shortest Bridge

Description You are given an n x n binary matrix grid where 1 represents land and 0 represents water. An island is a 4-directionally connected group of 1’s not connected to any other 1’s. There are exactly two islands in grid. You may change 0’s to 1…

【记录】重装系统后的软件安装

考完研重装了系统&#xff0c;安装软件乱七八糟&#xff0c;用到什么装什么。在这里记录一套标准操作&#xff0c;备用。一个个装还是很麻烦&#xff0c;我为什么不直接写个脚本直接下载安装包呢&#xff1f;奥&#xff0c;原来是我太菜了还不会写脚本啊&#xff01;先记着吧&a…

业务题day02

2-1 说一下生成课表的业务流程 当点击马上学习或者报名的时候&#xff0c;先去数据库查询课程是否存在或者是否在有效期内&#xff0c;如果判断通过&#xff0c;就成功。 接下来就要保存对应的课表&#xff0c;在上述操作中涉及两个微服务&#xff0c;下单过程trade微服务调用…

Zookeeper使用详解

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

C语言之冒泡排序(数组)

//数组--冒泡排序 //1.经典错误版 #include<stdio.h> void bubble_sort(int arr[]) { //确定冒泡函数的趟数(10个元素&#xff0c;9趟冒泡排序) int i 0; int sz sizeof(arr) / sizeof(arr[0]);//10 算出了1 这里错了 传参错了 for (i 0; i < sz…

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行是矩…

【零基础入门TypeScript】字符串

目录 句法 字符串方法 String 对象允许您处理一系列字符。它使用许多辅助方法包装字符串原始数据类型。 句法 var var_name new String(string); 下面给出了 String 对象中可用方法的列表及其描述&#xff1a; 编号属性及描述1.构造函数 返回对创建该对象的 String 函数的…

MFC多线程编程示例1

新建一个对话框工程; 添加2个编辑框,2个按钮; 对话框头文件添加, public:CWinThread *m_pthread1;CWinThread *m_pthread2;static UINT hellothread(LPVOID lparam);static UINT testthread(LPVOID lparam);CCriticalSection g_criticalsection;BOOL flag;int i1, i2; …

BC28 大小写转换

描述 实现字母的大小写转换。多组输入输出。 输入描述&#xff1a; 多组输入&#xff0c;每一行输入大写字母。 输出描述&#xff1a; 针对每组输入输出对应的小写字母。 示例1 输入&#xff1a; A B复制输出&#xff1a; a b 复制 备注&#xff1a; 多组输入过程中…

第九部分 使用函数 (四)

目录 一、foreach 函数 二、if 函数 三、call 函数 一、foreach 函数 foreach 函数和别的函数非常的不一样。因为这个函数是用来做循环用的&#xff0c;Makefile 中的 foreach 函数几乎是仿照于 Unix 标准 Shell&#xff08;/bin/sh&#xff09;中的 for 语句&#xff0c;或…

SpringFramework实战指南(一)

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