Java类、对象以及(静态)方法的探讨
大家好,这是我的第一篇博客。在这里我想跟大家分享一下Java最基础的Class and Object,也就是我们熟说的类和对象,以及对Java方法的探讨。
初学时的我因为没有对这里面的每一行代码思考透彻,在学习Java中级时感到愈加困难,像是在搭建一栋地基不断摇晃的大楼,越往上盖,越是觉得自己轻浮。因此,我决定用相较初学时不同的眼界,回过头来看最基础的代码。也希望我的随笔能帮助到你们,或是得到你们的不一样的看法。
完整代码请见下图。首先,我用大楼来解释一下类Class和对象Object之间的关系。
如果对象Object是一栋大楼,那么类Class就是大楼的建造图纸。在图纸里面,我们需要写上:大楼里面的东西例如地板、玻璃等(variables变量),以及大楼的安全保障怎么做(methods方法)。如以下代码所示。

相信你们已经懂了大楼的图纸应该怎么去写,接下来我将创建一个计算器类和一个(public)测试类。计算机类有三个变量:num1, num2, result, 同时还有一个方法void Perform()用以计算num1+num2;测试类中没有定义新变量,但是它有一个主方法(我们将在后面详细说这个主方法)
在主方法中,我们将引用计算器类,创建一个新的object即cal。这里我们需要用到关键字new(用以分配内存)和构造函数constructor:Calc cal; cal = new Calc();(构造函数也将在后面详细讲解)Calc cal;为引用,cal = new Calc();为创建新的object,也可以直接写成Calc cal = new Calc();

创建好新的对象之后,我们就可以引用Calc类中的变量:cal.num1, cal.num2, cal.result 以及方法:cal.Perform();如果我们声明cal.num1=3;cal.num2=5;那么经过cal.Perform()方法之后,cal.result = cal.num1+cal.num2 = 8,再经过
System.out.println输出cal.result,在控制台console得到结果8。

相信你们已经大致了解了如何引用类并创造一个新的对象,并引用类中的变量和方法进行计算。不过我们还剩有两个未解释清楚的问题:主方法main()和构造函数constructor,我们将一一进行解释。
public static void main(String args[]){}是初学者包括我都很不解的一个函数形式。实际上,Java运行时首先会执行main()方法,就和c语言一样。而main方法是由Java虚拟机调用的,所以必须是public,虚拟机调用的main()方法的时候,不需要产生任何对象,所以main()方法声明为static,且不需要返回值,所以必须声明为void。String[] args是main函数的形式参数,可以用来获取命令行用户输入进去的参数。
接下来我们解释构造函数constructor。我们在主方法中的对象 cal 就是由Calc()构造函数创建的。实际上,无需我们进行定义,每一个类会自动生成与类同名的构造函数(方法)。一个类中能有多个构造函数。它们没有函数类型,不返回任何值,且默认类中定义的变量为0。因此,如果我们不在主方法中声明cal.num1=3;cal.num2=5,那么输出结果将会是0。如下图:

当然,我们还可以自行定义构造函数以改变变量的默认值,甚至是函数的参数。
如下图所示。我们取消了声明cal.num1=3;cal.num2=5,而是在构造函数Calc()中直接将3,5分别赋值给num1, num2,在另外一个构造函数Calc(int number1,int number2)中将number1,number2分别赋值给num1, num2,而在主函数中,对象cal2的构造函数中的3,4将分别赋值给number1,number2。分别输出cal1.result和cal2.result,得到的结果大家肯定也知道了。

好了这就是这次博客的全部内容,谢谢你们能够看完。更详细的关于main()函数的解释可以看https://www.cnblogs.com/wannianma/archive/2011/04/03/wannianma.html
Java类、对象以及(静态)方法的探讨的更多相关文章
- Java进阶(四十)Java类、变量、方法修饰符讲解
Java进阶(四十)Java类.变量.方法修饰符讲解 Java类修饰符 abstract: 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final: 将一个类生命为最终(即非继承类) ...
- 规则引擎集成接口(九)Java类对象
Java类对象 右键点击“对象库” —“添加java类对象”,如下图: 弹出窗体,在文本框中输入类的全名“com.flagleader.test.Test”,选择该类型后确定,如下: 显示如下,勾选上 ...
- ResultSet转成java类对象
在做web开发时遇到一个事情: 需要从mysql数据表中查询数据并遍历查询结果 这样最简单的方式是:查询到结果根据表中字段列表的顺序来一个个获取字段,但这样需要记住字段的顺序,操作起来不是那么方便.因 ...
- paip兼容windows与linux的java类根目录路径的方法
paip兼容windows与linux的java类根目录路径的方法 1.只有 pathx.class.getResource("")或者pathx.class.getResourc ...
- 存在继承关系的Java类对象之间的类型转换(一)
类似于基本数据类型之间的强制类型转换. 存在继承关系的父类对象和子类对象之间也可以 在一定条件之下相互转换. 这种转换需要遵守以下原则: 1.子类对象可以被视为是其父类的一个对象2.父类对象不能被 ...
- Java 类 对象 包
Java类和对象 类是具有相同属性和行为的一组对象的集合.(属性是用来描述对象的特征可以理解为成员变量 例如:一个学生(对象)他的类可能是学校,它的属性可能是学号,姓名,年龄,班级,成绩等等) 例子: ...
- java类 对象 和构造方法
github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...
- Java类、属性、方法、构造方法、块、内部类的基本概念
类 概念:类相当于一个模板,里面定义了多个对象共同的属性和方法 基本结构:属性.方法.构造方法.块.内部类 声明形式:[访问权限修饰符][修饰符] class 类名 { 类体 } 属性 概念:存放对象 ...
- 转: JaxbContext生成xml文件或java类对象转化注解
JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换.在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版 ...
- java Object对象的clone方法
参考copy链接:http://blog.csdn.net/bigconvience/article/details/25025561 在看原型模式,发现要用到clone这个方法,以前和朋友聊过,没怎 ...
随机推荐
- ciscn 2022 misc 部分wp
目录 everlasting_night ez_usb everlasting_night 提示是注意png数据块 然后注意图片通道数据可以用来lsb解码 下载是一张图片,尝试几种方法之后没有太大 ...
- Tauri-Vue3桌面端聊天室|tauri+vite3仿微信|tauri聊天程序EXE
基于tauri+vue3.js+vite3跨桌面端仿微信聊天实例TauriVue3Chat. tauri-chat 运用最新tauri+vue3+vite3+element-plus+v3layer等 ...
- Blog1:nchu-software-oop-2022-1~3
(1) 前言 针对在完成三次作业过程中产生的问题进行总结与分析. 三次作业一共十五(9+3+3)道题目,其中前两次难度较为简单,第三次复杂程度飞跃式上涨. 其中,涉及到java语言中基本的输入输出语句 ...
- 空链接的作用以及<a href="#"></a>和<a href="javascript:;"></a>的区别
空链接的作用以及<a href="#"></a>和<a href="javascript:;"></a>的区别在 ...
- Mysql综合实验2-LAMP+MHA+MYcat分库
实验目标: 1.搭建主从半同步+GTID复制 2.搭建MHA主服务器高可用 3.Mycat实现分库:wordpress库和shopxo库 4.客户通过域名可以访问到wordpress和shopxo 实 ...
- Django开发汇总
基本配置 # 设置数据库为使用的mysql DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'libr ...
- 畅联云平台(www.24hlink.cn)支持的用传列表
无锡蓝天 沈阳君丰 无锡富贝 海康威视 海湾 苏州思迪 法安通 北大青鸟 金盾 依爱 威隆 1)几乎集齐了市场上常见的用户信息传输装置的类型,如果没接入的,我们也能接入哦. 2)欢迎咨询我们关于用传的 ...
- MindStudio模型训练场景精度比对全流程和结果分析
摘要:MindStudio是一套基于华为昇腾AI处理器开发的AI全栈开发平台 本文分享自华为云社区<MindStudio模型训练场景精度比对全流程和结果分析>,作者:yd_24730208 ...
- JAVA缓存规范 —— 虽迟但到的JCache API与天生不俗的Spring Cache
大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 有诗云"纸上得来终觉浅,绝知 ...
- 2022-11-10 Acwing每日一题
本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...