在Java编程语言中,方法调用是面向对象编程(OOP)的核心概念之一。方法代表了可执行的代码块,可以处理数据或控制程序流程。本文将深入探讨在Java中如何进行方法调用,这对于初学者理解OOP至关重要。 1. **同一个类中的方法调用** a. **非静态方法调用非静态方法** (3 种) - 直接调用:在同一个非静态方法内部,可以直接使用另一个非静态方法的名字来调用。 ```java class MyClass { void method1() { method2(); } void method2() { // 代码 } } ``` - 对象实例调用:在类的外部,你需要通过类的实例来调用非静态方法。 ```java MyClass obj = new MyClass(); obj.method1(); ``` - this关键字调用:在当前非静态方法内部,可以使用`this`关键字引用当前对象并调用其他非静态方法。 ```java class MyClass { void method1() { this.method2(); } void method2() { // 代码 } } ``` b. **静态方法调用非静态方法** (1 种) 静态方法不能直接访问非静态成员,因为它们在类加载时就已经存在,而非静态成员是在对象创建后才有的。但可以通过创建对象实例来调用非静态方法。 ```java class MyClass { static void staticMethod() { MyClass obj = new MyClass(); obj.nonStaticMethod(); } void nonStaticMethod() { // 代码 } } ``` c. **非静态方法调用静态方法** (4 种) - 直接调用:在非静态方法内部,可以直接使用类名和静态方法名来调用。 ```java class MyClass { void nonStaticMethod() { MyClass.staticMethod(); } static void staticMethod() { // 代码 } } ``` - 对象实例调用:虽然不常见,但也可以通过对象实例来调用静态方法。 ```java MyClass obj = new MyClass(); obj.staticMethod(); ``` - 类名调用:这通常是调用静态方法的标准方式。 ```java MyClass.staticMethod(); ``` - this关键字:虽然不适用,但在语法上可以写,但Java编译器会警告,因为静态方法与对象实例无关。 d. **静态方法调用静态方法** (3 种) - 直接调用:静态方法可以互相调用,就像调用非静态方法一样。 ```java class MyClass { static void method1() { method2(); } static void method2() { // 代码 } } ``` - 类名调用:也可以使用类名来调用静态方法。 ```java MyClass.method1(); MyClass.method2(); ``` - this关键字:静态方法中使用`this`关键字是非法的,因为它与对象实例无关。 2. **不同类中的方法调用** a. **非静态方法调用非静态方法** (1 种) 需要创建目标类的实例来调用其非静态方法。 ```java class ClassA { void methodA() { ClassB objB = new ClassB(); objB.methodB(); } } class ClassB { void methodB() { // 代码 } } ``` b. **静态方法调用非静态方法** (1 种) 需要创建目标类的实例来调用其非静态方法。 ```java class ClassA { static void staticMethod() { ClassB objB = new ClassB(); objB.methodB(); } } class ClassB { void methodB() { // 代码 } } ``` c. **静态方法调用静态方法** (2 种) 类名调用或直接调用都可以。 ```java class ClassA { static void methodA() { ClassB.methodB(); } } class ClassB { static void methodB() { // 代码 } } ``` d. **非静态方法调用静态方法** (2 种) 直接调用或通过类名调用都可以。 ```java class ClassA { void methodA() { ClassB.methodB(); } } class ClassB { static void methodB() { // 代码 } } ``` 3. **调用构造方法** a. **调用本类中的构造方法** (1 种) 使用`this()`关键字,可以在同一个类的不同构造方法之间传递参数。 ```java class MyClass { MyClass(int a) { this(a, 0); } MyClass(int a, int b) { // 初始化代码 } } ``` b. **调用父类中的无参的构造方法** (2 种) - `super()`关键字:在子类构造方法中,用`super()`调用父类的无参构造方法。 ```java class Parent { Parent() { // 代码 } } class Child extends Parent { Child() { super(); // 调用父类无参构造 } } ``` - 默认调用:如果子类没有显式调用父类构造方法,Java会默认调用父类的无参构造方法。 c. **调用父类中有参的构造方法** (2 种) - `super(args)`:在子类构造方法中,使用`super(args)`调用父类的有参构造方法。 ```java class Parent { Parent(int a) { // 代码 } } class Child extends Parent { Child(int a) { super(a); // 调用父类有参构造 } } ``` 4. **调用父类中的自定义方法** (4 种) - 子类对象调用:子类对象可以直接调用继承自父类的非私有方法。 ```java class Parent { void parentMethod() { // 代码 } } class Child extends Parent { void childMethod() { parentMethod(); // 调用父类方法 } } ``` - `super.methodName()`:在子类方法中,使用`super.methodName()`明确指定调用父类的同名方法。 ```java class Parent { void method() { // 代码 } } class Child extends Parent { void method() { super.method(); // 调用父类方法 } } ``` 理解Java中的方法调用机制是掌握面向对象编程的关键。正确地调用方法可以帮助你编写出更加清晰、可维护的代码,同时提高程序的效率。对于初学者来说,熟悉这些调用方式及其适用场景,将有助于更好地理解和应用OOP概念。
- 后置后觉2013-03-29一个提纲式的总结而已,适合初学者整理一下思路。
- 夸嘴2013-03-30终于找到了,感谢
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python API 包装器和库列表.zip
- Python - 与我的 YouTube 频道相关的脚本存储在这里,可以用任何版本的 Python 编写.zip
- PyClass 课程计划.zip
- Puppet 模块用于安装和管理 Python、pip、virtualenvs 和 Gunicorn 虚拟主机 .zip
- jieshao123456
- Java 将本地mp4推流rtsp
- 第7章 聚类算法 - 作业 - 副本.ipynb
- Gartner发布2024年中国网络安全发展趋势
- OpenStack 存储 (Swift) 客户端 代码镜像由 opendev.org 维护 .zip
- 四社区D栋 2.m4a