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这个方法,以前和朋友聊过,没怎 ...
随机推荐
- Hudi 数据湖的插入,更新,查询,分析操作示例
Hudi 数据湖的插入,更新,查询,分析操作示例 作者:Grey 原文地址: 博客园:Hudi 数据湖的插入,更新,查询,分析操作示例 CSDN:Hudi 数据湖的插入,更新,查询,分析操作示例 前置 ...
- [Mysql] 页结构
什么是页? 页是InnoDB中管理数据的最小单元 页与页之间是通过一个双向链表连接起来. 页的组成 FileHeader 上一页下一页的指针 FIL_PAGE_PREV FIL_PAGE_NEXT P ...
- 8.pygame-定时器
使用定时器添加敌机 游戏启动后,每隔一秒出现一架敌方飞机 每架飞机向屏幕下方飞行,速度各不相同 没加敌机出现的水平位置也不进相同 当敌机从屏幕下方飞出,不会再飞回到屏幕中 定时器 pygame中使 ...
- 【JavaWeb】学习笔记——Servlet、Filter、Listenter
Servlet Servlet 简介 Servlet 是 Java提供的一门动态web资源开发技术 Servlet 是JavaEE 规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Se ...
- CentOS7虚拟机配置git仓库(配置虚拟机,网络,git仓库,windows端git访问)
想要达成的目的:从windows使用git访问CentOS7服务器上搭建的git仓库 用到的软件: (1)VMware-workstation-full-15.5.0-14665864.exe (2) ...
- Java多线程-ThreadPool线程池-2(四)
线程池是个神器,用得好会非常地方便.本来觉得线程池的构造器有些复杂,即使讲清楚了对今后的用处可能也不太大,因为有一些Java定义好的线程池可以直接使用.但是(凡事总有个但是),还是觉得讲一讲可能跟有助 ...
- Linux环境jdk安装配置
1.jdk安装包:jdk-8u191-linux-x64.tar.gz2.拷贝 jdk-8u191-linux-x64.tar.gz 到/usr/local命令如下:cp jdk-8u191-linu ...
- dp入门30题
前言:本文章主要记录一些 \(dp\) 入门题,都是我做过的,希望读者能从这些基础题中打好 \(dp\) 扎实的基础,有不足的地方也欢迎指出.大部分是 \(CodeFoces\) 和 \(Atcode ...
- TreeUtils工具类一行代码实现列表转树 实战Java8 三级菜单 三级分类 附视频
一.序言 在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单.多级目录.多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率. 本文将基于 ...
- 核磁共振成像学习笔记——从FID信号到K空间
在理想磁场环境下(没有不存在场不均匀性),对于一个没有梯度场的方块. 此时,RF pulse的两路正交信号(相位差为90°)对此方块进行激发,然后收取信号,我们可以得到由此方块产生的FID信号. 设此 ...