当前位置:网站首页 > 技术博客 > 正文

静态方法和实例方法的调用



“二哥,这一节我们学什么呢?”三妹满是期待的问我。

“这一节我们来了解一下 Java 中的方法——什么是方法?如何声明方法?方法有哪几种?什么是实例方法?什么是静态方法?什么是抽象方法?什么是本地方法?”我笑着对三妹说,“我开始了啊,你要注意力集中啊。”

方法用来实现代码的可重用性,我们编写一次方法,并多次使用它。通过增加或者删除方法中的一部分代码,就可以提高整体代码的可读性。

只有方法被调用时,它才会执行。Java 中最有名的方法当属 方法,这是程序的入口。

方法的声明反映了方法的一些信息,比如说可见性、返回类型、方法名和参数。如下图所示。

访问权限:它指定了方法的可见性。Java 提供了四种访问权限修饰符:

  • public:该方法可以被所有类访问。
  • private:该方法只能在定义它的类中访问。
  • protected:该方法可以被同一个包中的类,或者不同包中的子类访问。
  • default:如果一个方法没有使用任何访问权限修饰符,那么它是 package-private 的,意味着该方法只能被同一个包中的类可见。

返回类型:方法返回的数据类型,可以是基本数据类型、对象和集合,如果不需要返回数据,则使用 void 关键字。

方法名:方法名最好反应出方法的功能,比如,我们要创建一个将两个数字相减的方法,那么方法名最好是 subtract。

方法名最好是一个动词,并且以小写字母开头。如果方法名包含两个以上单词,那么第一个单词最好是动词,然后是形容词或者名词,并且要以驼峰式的命名方式命名。比如:

  • 一个单词的方法名:
  • 多个单词的方法名:

一个方法可能与同一个类中的另外一个方法同名,这被称为方法重载。

参数:参数被放在一个圆括号内,如果有多个参数,可以使用逗号隔开。参数包含两个部分,参数类型和参数名。如果方法没有参数,圆括号是空的。

方法签名:每一个方法都有一个签名,包括方法名和参数。

方法体:方法体放在一对花括号内,把一些代码放在一起,用来执行特定的任务。

方法可以分为两种,一种叫标准类库方法,一种叫用户自定义方法。

Java 提供了大量预先定义好的方法供我们调用,也称为标准类库方法,或者内置方法。比如说 String 类的 、、 方法,以及我们在初学 Java 阶段最常用的 方法,用来在控制台打印信息。

在上面的代码中,我们使用了两个预先定义的方法, 方法是程序运行的入口, 方法是 类的一个方法。这些方法已经提前定义好了,所以我们可以直接使用它们。

我们可以通过集成开发工具查看预先定义方法的方法签名,当我们把鼠标停留在 方法上面时,就会显示下图中的内容:

方法的访问权限修饰符是 public,返回类型为 void,方法名为 println,参数为 ,以及 Javadoc(方法是干嘛的)。

预先定义方法让编程变得简单了起来,我们只需要在实现某些功能的时候直接调用这些方法即可,不需要重新编写。

Java 的一个非常大的优势,就是,JDK 的设计者(开发者)为我们提供了大量的标准类库方法,这对于初学编程的新手来说极其友好;不仅如此,GitHub/码云上也有大量可以直接拿到生产环境下使用的第三方类库,比如说 hutool 啊、Apache 包啊、一线大厂或者顶级开发大佬贡献的类库,比如说 Druid、Gson 等等。

但如果你想从一个初级开发者(俗称调包侠)晋升为一名优秀的 Java 工程师,那就需要深入研究这些源码,并掌握,最好是能自己写出来这些源码,最起码能自定义一些源码,以便为我们所用。

当预先定义方法无法满足我们的要求时,就需要自定义一些方法,比如说,我们来定义这样一个方法,用来检查数字是偶数还是奇数。

方法名叫做 ,访问权限修饰符是 public,并且是静态的(static),返回类型是 void,参数有一个整型(int)的 num。方法体中有一个 if else 语句,如果 num 可以被 2 整除,那么就打印这个数字是偶数,否则就打印这个数字是奇数。

方法被定义好后,如何被调用呢?

方法是程序的入口,并且是静态的,那么就可以直接调用同样是静态方法的 。

当一个方法被 static 关键字修饰时,它就是一个静态方法。换句话说,静态方法是属于类的,不属于类实例的(不需要通过 new 关键字创建对象来调用,直接通过类名就可以调用)。

没有使用 static 关键字修饰,但在类中声明的方法被称为实例方法,在调用实例方法之前,必须创建类的对象。

方法是一个实例方法,需要创建 InstanceMethodExample 对象来访问。

实例方法有两种特殊类型:

  • getter 方法
  • setter 方法

getter 方法用来获取私有变量(private 修饰的字段)的值,setter 方法用来设置私有变量的值。

getter 方法以 get 开头,setter 方法以 set 开头。

相应的,有 static 关键字修饰的方法就叫做静态方法。

StaticMethodExample 类中,mian 和 add 方法都是静态方法,不同的是,main 方法是程序的入口。当我们调用静态方法的时候,就不需要 new 出来类的对象,就可以直接调用静态方法了,一些工具类的方法都是静态方法,比如说 hutool 工具类库,里面有大量的静态方法可以直接调用。

Hutool 的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。

以计算 MD5 为例:

  • 👴【以前】打开搜索引擎 -> 搜“Java MD5 加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用
  • 👦【现在】引入 Hutool -> SecureUtil.md5()

Hutool 的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的 bug。

没有方法体的方法被称为抽象方法,它总是在抽象类中声明。这意味着如果类有抽象方法的话,这个类就必须是抽象的。可以使用 abstract 关键字创建抽象方法和抽象类。

当一个类继承了抽象类后,就必须重写抽象方法:

输出结果如下所示:

“关于方法,我们就讲到这里吧,学会了类/变量/方法,基本上就可以做一个入门级的 Java 程序员了。”我面露微笑,继续对三妹说,“继续加油吧!”

“好的,谢谢二哥你的细心帮助。”


GitHub 上标星 10000+ 的开源知识库《二哥的 Java 进阶之路》第一版 PDF 终于来了!包括Java基础语法、数组&字符串、OOP、集合框架、Java IO、异常处理、Java 新特性、网络编程、NIO、并发编程、JVM等等,共计 32 万余字,500+张手绘图,可以说是通俗易懂、风趣幽默……详情戳:太赞了,GitHub 上标星 10000+ 的 Java 教程

微信搜 沉默王二 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 222 即可免费领取。

  • 上一篇: jedis和redis的关系
  • 下一篇: 网页数据加密
  • 版权声明


    相关文章:

  • jedis和redis的关系2025-09-19 13:30:02
  • python如何打包程序2025-09-19 13:30:02
  • 小程序码怎么生成二维码2025-09-19 13:30:02
  • cpu压力测试多少度正常2025-09-19 13:30:02
  • 二叉排序树构造2025-09-19 13:30:02
  • 网页数据加密2025-09-19 13:30:02
  • 动态规划之01背包问题(最易理解的讲解)2025-09-19 13:30:02
  • java并发编程从入门到精通2025-09-19 13:30:02
  • java中注解是什么意思2025-09-19 13:30:02
  • 跳表实现排行榜2025-09-19 13:30:02