我学习了java的方法,在c++中相当于函数
Java方法是面向对象编程中最核心的概念之一,它允许我们在程序中封装一部分代码,以便在需要时重复使用。
方法的声明语法:
访问修饰符 返回类型 方法名(参数列表) {
// 方法体
}
访问修饰符:
public:公有的,任何地方都能访问。
protected:受保护的,同一包内和子类可以访问。
private:私有的,只有同一个类内部才能访问。
(default):默认的访问修饰符,只有在同一个包内才能访问。
返回类型:
可以是任何Java基本数据类型(如int、double等)、引用类型(如String、List等),或者是void(表示没有返回值)。
参数列表:
用于定义传递给方法的数据,可以有零个、一个或多个参数。
参数名称和数量决定了方法的签名(signature),常用于方法重载。
方法体:
方法内部执行的代码块。
可以包含变量声明、表达式、控制结构(如if, for, while等)、方法调用等。
方法的执行与调用:
可以使用方法名来执行一个方法。
调用方法时,实际参数会被传送给方法的形参(如果有的话)。
可以为方法指定一个调用者(caller),这个调用者在方法执行结束时接收返回值(如果方法有返回值的话)。
方法的重载(Overloading):
拥有相同的方法名,但参数列表不同的方法。
重载方法可以有不同的访问修饰符和返回类型。
静态方法(Static Methods):
可以通过类直接调用,不需要创建类的实例。
静态方法不能直接访问非静态的成员变量和方法。
实例方法(Instance Methods):
必须通过类的实例来调用。
实例方法可以通过this关键字访问当前对象的实例变量和方法。
递归方法:
一个方法调用它自己的方法。
用于解决递归问题,比如求阶乘、遍历树结构等。
构造方法(Constructor):
用于初始化新创建对象的成员变量。
没有返回类型,其名称必须与类名相同。
可以重载,但不会有constructor方法重载(因为constructor没有返回类型)。
方法的重写(Overriding):
在子类中重新定义一个与父类方法有相同名称、返回类型、参数列表和抛出异常的方法。
重写的方法不能降低方法的访问权限。
可变参数列表(Varargs):
允许方法接受可变数量的参数。
是通过添加一个...来表示一个参数列表的结尾。
方法的抛出(Throws):
用于声明方法可能抛出的异常。
可以抛出多个异常,每个异常之间用逗号分隔。
方法的内存管理:
方法执行时,除了局部变量,还会在栈内存中创建一个新的作用域。
方法执行结束时,其作用域内的局部变量会被释放。