JAVA面向对象之方法

简介:

一、方法的重载

Java允许在同一个类中定义几个同名的方法,只要这些方法具有不同的参数列表,即方法的参数类型不同,或方法参数个数不同。这种做法称为方法的重载。方法的重载包括以下几种:

1、成员方法的重载

重载方法的参数表必须不同,参数的不同主要是参数的类型、顺序、个数不同。

public class MethodOverload
{
   public int sum(int a, int b)
   {
      System.out.println("sum(int a, int b)");
      return a + b;
   }

   public double sum(double a, double b)
   {
      System.out.println("sum(double a, double b)");
      return a + b;
   }

   public static void main(String[] args)
   {
      MethodOverload overload = new MethodOverload();
      overload.sum(10, 10);
      overload.sum(10.0, 10.0);
   }
}

在上面的例子中定义了同名的方法sum,但参数列表不同,为了区分实际调用的方法,在sum方法中输出了方法的原型,运行后可得到如下结果:

sum(int a, int b)
sum(double a, double b)

由此我们可以看不到,虽然方法的方法名相同,但是Java会根据实际情况调用最适合的方法。

2、构造方法的重载

在上一篇博客中也提到了一些构造方法重载的知识,定义多个构造方法其实就是构造方法的重载。当一个类中存在多个重载的构造方法时,他们之间可以相互调用,这种调用通过关键字this实现,同时this调用语句必须是构造方法中的第一个可执行于语句。

3、注意

a、参数顺序

因参数的顺序不同而构建的重载的方法,一定要建立在类型不同的基础上,如果本身类型和个数相同,则不存不在顺序问题。

b、返回值

重载方法的返回类型可以相同,也可以不同,但如果仅是返回类型不同,而方法名和形参列表都相同,则是非法的。

二、方法间的参数传递

方法声明时的参数称为形式参数(形参)。直到方法被调用时,才被变量或其他数据所替代,而这些具体的变量或数据被称为实际参数。要调用一个方法必须提供实际参数,并且参数类型与顺序必须要与形式参数相对应。

1、基本数据类型的参数传递

public class Value
{
   public void change(int a)
   {
      a += 1;
   }

   public static void main(String[] args)
   {
      Value value = new Value();
      int a = 10;
      value.change(a);
      System.out.println(a);
   }
}

运行后输出结果为:10

此种传递方式形式参数就相当于方法中定义的局部变量,方法调用结束后就被释放了,不会影响到主程序中同名的局部变量,即在方法中对形参进行修改后不会影响到实际传递的实参。

2、引用数据类型的参数传递

public class Ref
{
   private int a;
   public void change(Ref ref)
   {
      ref.a += 1;
   }

   public static void main(String[] args)
   {
      Ref ref = new Ref();
      ref.a = 10;
      ref.change(ref);
      System.out.println(ref.a);
   }
}

运行后输出结果为:11

对象的引用变量并不是对象本身,它们只是对象的引用(名称)。就好像一个人可以有多个名字,同理,一个对象也可以有多个引用名称。因为实际的对象是同一个,所以在方法中对其进行修改后,会影响其它地方的引用。一定要注意区分这两种传递的区别。

目录
相关文章
|
2月前
|
前端开发 JavaScript Java
Java 开发中 Swing 界面嵌入浏览器实现方法详解
摘要:Java中嵌入浏览器可通过多种技术实现:1) JCEF框架利用Chromium内核,适合复杂网页;2) JEditorPane组件支持简单HTML显示,但功能有限;3) DJNativeSwing-SWT可内嵌浏览器,需特定内核支持;4) JavaFX WebView结合Swing可完美支持现代网页技术。每种方案各有特点,开发者需根据项目需求选择合适方法,如JCEF适合高性能要求,JEditorPane适合简单展示。(149字)
282 1
|
1月前
|
算法 Java 开发者
Java 项目实战数字华容道与石头迷阵游戏开发详解及实战方法
本文介绍了使用Java实现数字华容道和石头迷阵游戏的技术方案与应用实例,涵盖GUI界面设计、二维数组操作、游戏逻辑控制及自动解法算法(如A*),适合Java开发者学习游戏开发技巧。
189 46
|
10天前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
31 0
|
2月前
|
Java 索引
Java ArrayList中的常见删除操作及方法详解。
通过这些方法,Java `ArrayList` 提供了灵活而强大的操作来处理元素的移除,这些方法能够满足不同场景下的需求。
368 30
|
1月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
2月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
123 1
|
2月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
|
2月前
|
安全 Java API
Java 集合高级应用与实战技巧之高效运用方法及实战案例解析
本课程深入讲解Java集合的高级应用与实战技巧,涵盖Stream API、并行处理、Optional类、现代化Map操作、不可变集合、异步处理及高级排序等核心内容,结合丰富示例,助你掌握Java集合的高效运用,提升代码质量与开发效率。
199 0
|
3月前
|
人工智能 前端开发 Java
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
102 6
Java 面试资料中相关代码使用方法与组件封装方法解析
|
2月前
|
算法 搜索推荐 Java
Java中的Collections.shuffle()方法及示例
`Collections.shuffle()` 是 Java 中用于随机打乱列表顺序的方法,基于 Fisher-Yates 算法实现,支持原地修改。可选传入自定义 `Random` 对象以实现结果可重复,适用于抽奖、游戏、随机抽样等场景。
115 0