关于java类与对象的创建

news2025/1/23 13:08:49

关于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.coloradmin.cn/o/1383854.html

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

相关文章

第 3 场 蓝桥杯小白入门赛 解题报告 | 珂学家 | 单调队列优化的DP + 三指针滑窗

前言 整体评价 T5, T6有点意思&#xff0c;这场小白入门场&#xff0c;好像没真正意义上的签到&#xff0c;整体感觉是这样。 A. 召唤神坤 思路: 前后缀拆解 #include <iostream> #include <algorithm> #include <vector> using namespace std;int main()…

03.neuvector之组的划分逻辑

neuvector之组的划分逻辑 原文链接,欢迎大家关注我的github账号 一、组的定义 NeuVector 会自动从正在运行的应用程序中创建组。这些组以前缀‘nv‘开头。您也可以使用 CRD 或 REST API 手动添加它们&#xff0c;并且可以在任何模式下创建、发现、监视或保护。网络和响应规则需…

Pandas:Python可视化神器

大家好&#xff0c;数据可视化可以让我们很直观的发现数据中隐藏的规律&#xff0c;察觉到变量之间的互动关系&#xff0c;可以帮助我们更好的给他人解释现象&#xff0c;做到一图胜千文的说明效果。 常见的数据可视化库有: matplotlib 是最常见的2维库&#xff0c;可以算作可…

如何基于 Gin 封装出属于自己 Web 框架?

思路 在基于 Gin 封装出属于自己的 Web 框架前&#xff0c;你需要先了解 Gin 的基本用法和设计理念。 然后&#xff0c;你可以通过以下步骤来封装自己的 Web 框架&#xff1a; 封装路由&#xff1a;Gin 的路由是通过 HTTP 方法和 URL 路径进行匹配的&#xff0c;你可以根据自己…

MySQl Mybatis

一、MySQL 1.1 概述 1.1.1 MySQL安装 1.1.2 数据模型 1.1.3 SQL简介 1.2 DDL 1.2.1 数据库操作 1.2.2 图形化工具 1.2.3 表结构操作 &#xff08;一&#xff09;创建 &#xff08;二&#xff09;数据类型 &#xff08;1&#xff09;数值类型 age tinyint unsigned——加上…

分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

SkyWalking 是一个开源 APM 系统&#xff0c;包括针对 Cloud Native 体系结构中的分布式系统的监视&#xff0c;跟踪&#xff0c;诊断功能。核心功能如下&#xff1a; 服务、服务实例、端点指标分析&#xff1b; 根本原因分析&#xff0c;在运行时分析代码&#xff1b; 服务拓…

从零开始搭建ubuntu 16.04 pwndocker环境

1.安装VMware-tools 1.1遇到问题 在使用 VMware Workstation时遇到了VMware Tools不能安装的问题&#xff0c;具体表现为&#xff1a;在要安装VMware Tools的虚拟机上右键 ----》安装VMware Tools(T)… 为灰色&#xff0c;不能够点击。 1.2解决方案    1. 关闭虚拟机&…

[学习笔记]刘知远团队大模型技术与交叉应用-汇总

参考资料&#xff1a; 视频&#xff1a;【清华NLP】刘知远团队大模型公开课全网首发&#xff5c;带你从入门到实战 课程计划 L1-NLP&Big Model Basics [学习笔记]刘知远团队大模型技术与交叉应用L1-NLP&Big Model Basics L2-Neural Network Basics [学习笔记]刘知…

力扣刷题(两数相加)

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

【读书笔记】《重构_改善既有代码的设计》重构的方法论

重构的方法论 标题&#xff1a;【读书笔记】【读书笔记】《重构_改善既有代码的设计》重构的方法论 时间&#xff1a;2024.01.14 作者&#xff1a;耿鬼不会笑 重构是什么? 什么是重构&#xff1a; “重构”这个词既可以用作名词也可以用作动词。 重构&#xff08;名词&…

如何在Python交互模式中运行py文件

Python是一种流行的编程语言&#xff0c;具有交互式的开发体验。除了编写和运行Python代码&#xff0c;Python还提供了交互式模式&#xff0c;允许用户在命令行界面中逐行输入和执行Python代码。在本文中&#xff0c;我们将介绍如何在Python的交互模式中运行.py文件&#xff0c…

室内定位相关中文期刊/学报笔记

这里写目录标题 文章最重要的部分通信学报1. 2023 基于扩散模型的室内定位射频指纹数据增强方法2. 2023 基于 CHAN 的改进卡尔曼滤波室内定位算法3. 2022 基于自适应蝙蝠算法的室内 RFID 定位算法4. 2017 基于核函数特征提取的室内定位算法研究5. 2021 基于CSI张量分解的室内Wi…

高级分布式系统-第11讲 现场总线技术

现场总线概述 国际电工委员会制定的国际标准IEC61158对现场总线&#xff08;fieldbus&#xff09;的定义是&#xff1a; 安装在制造或过程区域的现场装置与控制室内的自动控制装置之间的数字式、串行、多点通信的数据总线。 新型的现场总线控制系统突破了DCS系统中通信由专用网…

数据结构:堆和堆排序

数据结构&#xff1a;堆和堆排序 文章目录 数据结构&#xff1a;堆和堆排序1.二叉树的存储结构1.顺序结构2.链式结构 2.堆3.堆的实现4.堆排序&#xff08;选择排序中的一类&#xff09;1. 基本思想2.代码实现 1.二叉树的存储结构 1.顺序结构 顺序结构存储就是使用数组来表示一…

C语言经典算法之直接排序算法

目录 前言 一、代码实现 二、时空复杂度 时间复杂度&#xff1a; 空间复杂度&#xff1a; 前言 建议&#xff1a;1.学习算法最重要的是理解算法的每一步&#xff0c;而不是记住算法。 2.建议读者学习算法的时候&#xff0c;自己手动一步一步地运行算法。 tips:希尔排序算…

【数据结构 | 直接插入排序】

直接插入排序 思路直接插入排序 思路 扑克牌是我们几乎每个人都可能玩过的游戏。最基本的扑克玩法都是一边摸牌&#xff0c;边理牌。假如我们拿到了这样一手牌&#xff0c;如下图所示&#xff1a; 理牌的方法都是不用教的。将3和4移动到5的左侧&#xff0c;再将2移动到最左侧&…

Centos安装Datax

Centos7安装DataX 一、DataX简介二、DataX的数据源支持三、安装DataX1、下载DataX2、解压3、检验是否安装成功4、使用 四、实践案例1、环境信息2、编写同步的配置文件(user_info.json)3、执行同步4、验证同步结果 一、DataX简介 DataX 是阿里云 DataWorks数据集成 的开源版本&a…

Spring来了,春天还会远吗?

结束了JVM的学习后&#xff0c;要进入的是JavaEE进阶的学习了。JavaEE进阶学习内容很多很丰富&#xff0c;并且也很有难度。今天我们就从Spring开始讲起。 目录 框架的好处 怎么学框架 Spring核心与设计思想 容器 IoC Spring IoC DI&#xff08;Dependency Injection&a…

GAN生成对抗网络介绍

GAN简介 GAN 全称是Generative Adversarial Networks&#xff0c;即生成对抗网络。 “生成”表示它是一个生成模型&#xff0c;而“对抗”代表它的训练是处于一种对抗博弈状态中的。 一个可以自己创造数据的网络&#xff01; 判别模型与生成模型 判别模型&#xff08;Discr…

Uniapp软件库源码-全新带勋章等

测试环境&#xff1a;php7.1。ng1.2&#xff0c;MySQL 5.6 常见问题&#xff1a; 配置好登录后转圈圈&#xff0c;检查环境及伪静态以及后台创建好应用 上传图片不了&#xff0c;检查php拓展fileinfo 以及public文件权限 App个人主页随机背景图&#xff0c;在前端uitl文件夹里面…