这里写目录标题
一.何为方法
在Java编程语言中,方法(Method)是一组执行特定任务的代码块
它定义在类或对象中,并且可以被其他部分的代码调用。
方法可以被多次调用,使得代码可以被重复使用,提高了代码的可维护性和可读性。
二.方法的定义
方法的基本语法如下:
返回类型 方法名(参数类型 参数名) {
// 方法体
// 可以包含一系列的语句和逻辑来完成特定任务
// 可以使用参数进行计算
// 可以使用return语句返回值(如果方法的返回类型不是void)
}
- 返回类型(Return Type):指定方法执行完毕后返回的数据类型。如果方法不返回任何值,返回类型应该用关键字 void 表示。
- 方法名(Method Name):方法的标识符,用来在程序中调用方法。规则同变量,第一个字母小写,第二个单词开始字母大写
- 参数类型(Parameter Type):指定方法接受的输入参数的数据类型。如果方法不需要参数,圆括号仍然是必需的,但是留空即可。
- 参数名(Parameter Name):指定方法接受的输入参数的名称,可以在方法内部使用这些参数。
- 方法体(Method Body):包含在方法内部的代码块,实现方法的具体功能。
- return语句:一是停止方法,二是用于返回方法的返回值(仅适用于非void类型的方法)。
以下是一个简单的方法示例
public class MyClass {
// 方法定义
public int add(int a, int b) {
int sum = a + b;
return sum; // 返回a和b的和
}
public static void main(String[] args) {
MyClass myClass = new MyClass();
int result = myClass.add(2, 3); // 调用add方法,并将返回值赋给result变量
System.out.println("Sum: " + result); // 输出:Sum: 5
}
}
三.方法的调用
1.实例方法(非静态方法)
实例方法就是没有被static修饰的方法,又称非静态方法。
实例方法是在类的实例上调用的方法。要调用实例方法,你首先需要创建类的一个实例,然后使用该实例来调用方法。实例方法的调用方式如下:
对象名.方法()
ClassName objectName = new ClassName();
objectName.methodName(arguments);
public class MyClass {
public int calculateSum(int a, int b) {
return a + b;
}
public static void main(String[] args) {
MyClass myObject = new MyClass(); // 创建类的实例
int result = myObject.calculateSum(2, 3); // 实例方法调用
System.out.println("Sum: " + result);
}
}
这里介绍一下实例和对象两种说法
在面向对象编程(Object-Oriented Programming,简称OOP)中,对象"是类的一个具体实例。
对象:对象是内存中一个实际存在的实体,它是一个类的具体实例。对象具有状态(属性)和行为(方法)。当你创建一个类的实例时,就创建了一个对象。对象是类的具体化,它可以被操作、传递和使用。
实例:实例是一个通用的术语,用来描述某个类的具体对象。在OOP中,当你使用new关键字创建一个类的对象时,你创建了这个类的一个实例。因此,每个对象都是该类的一个实例。
换句话说,对象是一个特定类的具体实体,而实例是描述这个对象的抽象概念。在实际编程中,这两个术语通常可以互换使用,因为它们表示相同的概念,即类的具体实例。
2. 构造方法
构造方法是一种特殊类型的实例方法。它们用于创建对象时进行初始化。构造方法具有以下特点:
[方法名与类名相同]:构造方法的名称必须与所在类的名称完全相同。
[没有返回类型]:构造方法没有返回类型,包括void。它们不能返回任何值,甚至不包含return语句。
[用于对象的初始化]:构造方法被调用时,用于初始化对象的状态,包括设置对象的属性、分配内存等操作。
构造方法有无参构造(隐式构造)和有参构造(显式构造)两种
- 每个类可以有一个或多个构造方法。
- 如果在类中没有显式定义构造方法,Java会提供一个默认的无参数构造方法(即使你没有写出来)。
- 如果你在类中定义了一个或多个构造方法,Java将不再提供默认的无参数构造方法。
构造方法的调用
当你使用new关键字创建对象时,Java会根据传递的参数选择相应的构造方法。如果你在类中定义了多个构造方法,Java会根据传递的参数数量和类型来匹配合适的构造方法。如果没有定义构造方法,Java会提供一个默认的无参数构造方法。
3.静态方法(类方法)
静态方法是使static 关键字修饰的方法,它属于类而不是类的实例。静态方法可以直接通过类名来调用,无需创建类的实例。静态方法的调用方式如下:类名.方法()
ClassName.methodName(arguments);
public class MyClass {
public static void printMessage(String message) {
System.out.println(message);
}
public static void main(String[] args) {
MyClass.printMessage("Hello, World!"); // 静态方法调用
}
}
同类中静态方法调用静态方法
4.静态方法与非静态方法的区别
在Java中,静态方法(Static Methods)和实例方法(Instance Methods)有几个关键区别:
1.调用方式:
静态方法:可以通过类名直接调用,不需要创建类的实例。
例如:ClassName.staticMethod()
实例方法:需要通过类的实例(对象)调用。
例如:objectName.instanceMethod()
2.关联对象:
静态方法:不依赖于类的实例,它们与类本身相关联,而不是类的特定实例。静态方法中无法访问实例变量,因为它们没有与特定对象相关联。
实例方法:依赖于类的实例,可以访问和修改实例变量,可以通过关联的对象访问和操作对象的状态。
3.this和super关键字:
静态方法:无法使用this关键字,因为静态方法不依赖于特定的实例。也无法使用super关键字。
实例方法:可以使用this关键字引用当前对象,也可以使用super关键字引用父类的实例变量和方法。
4.内存分配:
静态方法:静态方法在类加载时就会被加载到内存中,属于类的一部分,只有一个副本,被所有类的实例共享。
实例方法:实例方法在每个类的实例(对象)中被创建,每个对象都有一份独立的实例方法副本。
5.访问权限:
静态方法:可以访问类的静态成员(包括静态变量和静态方法),但不能直接访问实例成员。
实例方法可以访问类的静态和实例成员。
四、方法调用总结
1.同类调用
同类调用静态方法,直接调用
同类调用非静态方法,创建实例调用
2.不同类调用
不同类调用静态方法,导入类包,通过类名调用
不同类调用非静态方法,导入类包,再创建实例化调用对象
3.继承中调用
- 子类可以调用父类的方法,可以使用super关键字调用父类的方法。(通常情况下,父类不能调用子类)
public class Parent {
void method() {
// ...
}
}
public class Child extends Parent {
void childMethod() {
super.method(); // 调用父类的方法
// ...
}
}
4.接口中方法调用
- 类实现接口时,需要实现接口中的方法。通过实现类的对象,可以调用接口中的方法。
interface MyInterface {
void interfaceMethod();
}
public class MyClass implements MyInterface {
public void interfaceMethod() {
// 实现接口中的方法
// ...
}
void myMethod() {
// 可以在类中的其他方法中调用接口中的方法
interfaceMethod();
}
}