JAVA基础教程DAY2-类的构造方法及类的实例化调用

下面我们来讲如何建好类以及如何将它实例化

首先建立一个学生类Student,里面要求有属性,学号、年龄为int型,姓名,方法有学习study
在Student.java文件当中,我们完成以上代码为
 

public class Student {int age=17;int sno=2121;String name="mike";String study(){return name+" is studying";}
}

上面代码可以实现基本要求,我们通常不会在类当中进行测试,所以我们会在新建测试类,格式为类名后加Test,我们新建StudentTest.java
 

public class StudentTest {public static void main(String[] args){Student stu1 = new Student();System.out.println(stu1.age);System.out.println(stu1.sno);System.out.println(stu1.study());}
}

我们运行StudentTest.java得到下面的结果
 

17
2121
mike is studying

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

通过已创建的对象来访问成员变量和成员方法,如下所示:
/* 实例化对象 */
Object referenceVariable = new Constructor();
/* 访问类中的变量 */
referenceVariable.variableName;
/* 访问类中的方法 */
referenceVariable.methodName();
所以说我们可以看到我们通过这一句,Student stu1 = new Student();完成了对学生类的实例化

那这句是如何构成的?首先Student为类名称,stu1为我们自己定义的学生1,new是开辟内存空间,后面的Student()则是构造方法,我们可以类比变量的定义,类的实例化类似于定义一个变量,

int a = 10;
Student stu1 = new Student();

这句话定义了一个变量a并且在内存当中开辟了10的存储空间,int为变量a的类型,Student也同样为对象stu1的类型,等号后面的同样都是对于内存大小的处理,这样理解比较容易。

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

在Student.java当中

public Student(){}

这句构造方法其实是隐藏的,所以说我们在测试类当中可以正常使用
那现在有个问题,如果说我们要求定义两个学生,要求不同的属性值,我们的构造方法则显得死板,我们如何实现?

方法的重载

解决方法是创建另一个有相同名字但参数不同的方法,这个过程我们称为方法的重载

public class Student {int age;int sno;String name;public Student(){}public Student(String name){this.name=name;}String study(){return name+" is studying";}
}

同样的,这里我们也会养成先写一个默认构造方法的习惯,重载的构造方法一定要参数的类型不同或者个数不同。

在测试类当中的调用

public class StudentTest {public static void main(String[] args){Student stu1 = new Student();Student stu2 = new Student("neo");System.out.println(stu1.study());System.out.println(stu2.study());}
}
静态变量

被 static 修饰的成员变量叫做静态变量,也叫做类变量,说明这个变量是属于这个类的,而不是属于是对象,没有被static修饰的成员变量叫做实例变量,说明这个变量是属于某个具体的对象的。静态变量可以直接通过类名.静态变量名称调用,虽然也能通过对象来访问静态变量和方法,但为了可读性,方便分辨静态变量,应该通过类名来调用。

静态方法

被 static 修饰的成员方法叫做静态方法,也叫做类方法,静态方法可以直接通过类名.静态方法名称调用(同样也可以用对象.方法的方式),不属于对象的。

同样也有静态常量,这里不做赘述

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

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

相关文章

【Rust基础入门】Hello Cargo

文章目录 前言Cargo是什么?Cargo的作用查看cargo版本使用cargo创建项目Cargo.toml文件cargo build命令cargo runcargo check为发布构建 总结 前言 在Rust编程中,Cargo扮演着至关重要的角色。它是Rust的包管理器,负责处理许多任务&#xff0c…

uniapp入门

一、新建项目 进入到主界面,左上角点击新建——1.项目 输入项目名称,Vue版本选择3 二、创建页面 选中左侧文件目录里的pages文件夹,右键,选择新建页面 1输入名称 2选中“创建同名目录” 3选择模板&…

昇思25天学习打卡营第7天|网络构建

网络构建 神经网络模型由tensor操作和神经网络层构成。 MIndSporezhong,Cell是构建所有网络的基类,也是网络的基本单元。cell也由子cell构成。 定义模型类 # 继承nn.Cell类 class Network(nn.Cell):def __init__(self):super().__init__()self.flatte…

ElasticSearch 和 MySQL的区别

MySQLElasticSearch 数据库(database)索引(index)数据表(table) 类型(type) 记录文档(document,json格式) 一、ES基础命令 1. ES cat查询命令 2.…

分布式技术专题 | TCP在分布式网络中的通信机制与底层实现

深入解析分布式网络中的TCP通信协议实现 跨地域通信与资源共享网络节点与主机的定义网络技术通信机制TCP/IP协议模型TCP/IP分层机制TCP的Socket链接处理控制TCP的优势和特性自动差错控制正确性和有序性 TCP的Socket使用端口在应用程序间通信TCP的Socket使用端口套接字操作 跨地…

uniapp封装虚拟列表滚动组件

uniapp封装虚拟列表滚动组件 这里用到一个列表&#xff0c;然后数据可能有很多很多…&#xff0c;一次性全部渲染到dom上会卡顿&#xff0c;很废性能&#xff0c;于是用了这个虚拟列表就变丝滑很多很多。 组件mosoweInventedList 代码&#xff1a; <!-- 虚拟滚动列表组件&a…

GPT-4o首次引入!全新图像自动评估基准发布!

目录 01 什么是DreamBench&#xff1f; 02 与人类对齐的自动化评估 03 更全面的个性化数据集 04 实验结果 面对层出不穷的个性化图像生成技术&#xff0c;一个新问题摆在眼前&#xff1a;缺乏统一标准来衡量这些生成的图片是否符合人们的喜好。 对此&#xff0c;来自清华大…

mysql主键自增连续新增时报错主键重复-Duplicate entry “x” for key PRIMARY

mysql主键自增连续新增时报错主键重复 1、mysql数据库设置数据库主键自增的规律 id -- AUTO_INCREMENT2、可视化工具查看自增没问题 3、问题描述 新增第一个时操作成功&#xff0c;新增第二个时候操作失败报错&#xff1a; Duplicate entry “x” for key PRIMARY4、分析&a…

千益畅行,旅游卡,如何赚钱?

​ 赚钱这件事情&#xff0c;只有自己努力执行才会有结果。生活中没有幸运二字&#xff0c;每个光鲜亮丽的背后&#xff0c;都是不为人知的付出&#xff01; #旅游卡服务#

简过网:考公务员难度大吗,一般考几年才上岸!

先调查一下&#xff0c;大家考公务员都是几年才上岸的&#xff1f; 最近有网友私信小编&#xff0c;普通人考公要准备多久才能上岸&#xff0c;其实对于多久能上岸这个问题&#xff0c;并没有一个准确的数字&#xff0c;众所周知&#xff0c;公务员考试是有一定难度的&#xf…

Git入门 本地仓库 远端仓库 多分支

Git入门 Git入门本地git初始化git仓库初始化 创建远端仓库githubgitee 指定远端仓库推送至远端多分支将feature分支合并至dev分支 其他开发者 Git入门 本地git初始化 git仓库初始化 mkdir myrepo # 创建仓库文件夹 cd myrepo/ # 进入目录 git init # 初始化git仓库 (创建.g…

C - Popcorn(abs358)

题意&#xff1a;有n个摊子&#xff0c;m个爆米花&#xff0c;想花费最少去的店铺买到所有的口味的爆米花&#xff0c;找到每一列都为‘o’的最少行数。 分析&#xff1a;用dfs寻找最少路径 #include<bits/stdc.h> using namespace std; typedef long long ll; char x;…

CAN通信波形【示波器抓取】

在测试bms系统过程中&#xff0c;在上位机发现无法读取CAN通信&#xff0c;尝试使用示波器抓取CAN通信波形&#xff0c;&#xff0c;去确定CAN通信是否正常。 做一想要从车上测出can总线上的数据还不太容易。 于是我首先使用示波器&#xff08;我使用的示波器型号是TDS 220&am…

第十四届蓝桥杯省赛C++B组E题【接龙数列】题解(AC)

需求分析 题目要求最少删掉多少个数后&#xff0c;使得数列变为接龙数列。 相当于题目要求求出数组中的最长接龙子序列。 题目分析 对于一个数能不能放到接龙数列中&#xff0c;只关系到这个数的第一位和最后一位&#xff0c;所以我们可以先对数组进行预处理&#xff0c;将…

opencascade AIS_InteractiveContext源码学习7 debug visualization

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…

JVM专题十一:JVM 中的收集器一

上一篇JVM专题十&#xff1a;JVM中的垃圾回收机制专题中&#xff0c;我们主要介绍了Java的垃圾机制&#xff0c;包括垃圾回收基本概念&#xff0c;重点介绍了垃圾回收机制中自动内存管理与垃圾收集算法。如果说收集算法是内存回收的方法论&#xff0c;那么垃圾收集器就是内存回…

OBS 免费的录屏软件

一、下载 obs 【OBS】OBS Studio 的安装、参数设置和录屏、摄像头使用教程-CSDN博客 二、使用 obs & 输出无黑屏 【OBS任意指定区域录屏的方法-哔哩哔哩】 https://b23.tv/aM0hj8A OBS任意指定区域录屏的方法_哔哩哔哩_bilibili 步骤&#xff1a; 1&#xff09;获取区域…

【智能算法】目标检测算法

目录 一、目标检测算法分类 二、 常见目标检测算法及matlab代码实现 2.1 R-CNN 2.1.1 定义 2.1.2 matlab代码实现 2.2 Fast R-CNN 2.2.1 定义 2.2.2 matlab代码实现 2.3 Faster R-CNN 2.3.1 定义 2.3.2 matlab代码实现 2.4 YOLO 2.4.1 定义 2.4.2 matlab代码实现…

[开源软件] 支持链接汇总

“Common rules: 1- If the repo is on github, the support/bug link is also on the github with issues”" label; 2- Could ask questions by email list;" 3rd party software support link Note gcc https://gcc.gnu.org openssh https://bugzilla.mindrot.o…

作业7.2

用结构体数组以及函数完成: 录入你要增加的几个学生&#xff0c;之后输出所有的学生信息 删除你要删除的第几个学生&#xff0c;并打印所有的学生信息 修改你要修改的第几个学生&#xff0c;并打印所有的学生信息 查找你要查找的第几个学生&#xff0c;并打印该的学生信息 1 /*…