在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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机网络学习资源汇总
- office visio 图标库
- pytorch安装包 windows 1.8.0 python 3.7
- 有彩色装饰物的小型圣诞树的python代码
- Java通用 Jar包启动脚本
- 【格林大华期货-2024研报】研究院专题报告:四季度中国经济增速回升可期.pdf
- 【格林期货-2024研报】三油两粕早盘提示.pdf
- 【格林期货-2024研报】市场快讯:红枣仍以偏空思路对待.pdf
- 【格林期货-2024研报】四季度中国经济增速回升可期.pdf
- 数据库课程设计 社区管理系统 使用mysql实现,包含运行结果图(未进行前端页面的设计)
- 【中信期货-2024研报】贵金属策略日报:除非特朗普政策预期扭转,否则短期贵金属估值仍偏高.pdf
- 【中邮证券-2024研报】业绩稳健增长,国产替代持续推进.pdf
- 【中信期货-2024研报】股市情绪回调,债市供给担忧仍存.pdf
- 【中邮证券-2024研报】Q3业绩高增,臂式产品有望持续放量.pdf
- 【中信期货-2024研报】中信期货晨报20241115:商品期货多数收跌,有色金属板块全面走低.pdf
- 【中原证券-2024研报】长安汽车(000625):公司点评报告:Q3毛利率环比改善,新能源订单表现亮眼.pdf