一、方法是什么,为什么要用方法?
java语言中的方法在其他语言可以成为函数,对于一些复杂的代码逻辑,如果想做到代码重复使用,就可以将这些代码放在一个大括号 “{}”中,并且起一个名字。使用代码的时候,字节知道名字调用即可。
格式:
修饰符 返回值 类型 方法名称(参数类型 参数名称) {
方法体
return 返回值;
}
二、方法的执行原理
方法在调用的时候,才会给该方法在内存中分配空间。如果这个方法只是定义没有调用,则不会在内存中分配空间。
方法在调用的时候在“栈”中分配空间。方法调用其实就是在“压栈”,方法结束其实就是“弹栈”。
顺序执行:
public class MethodTest {
//入口
public static void main(String[] args) {
int i = 100;
m1(i);
}
public static void m1(int i) {
m2(i);
}
public static void m2(int i) {
m3(i);
}
public static void m3(int i) {
System.out.println("m3方法中的i=" + i);
}
}
递归调用:
public class MethodTest {
//入口
public static void main(String[] args) {
int n = 5;
int reValue = method(n);
System.out.println(reValue);
}
public static int method(int n) {
if (n == 1) {
return 1;
} else {
return n + method(n -1);
}
}
}
三、关于java类的构造函数
1、构造方法语法:
修饰符列表 构造方法名(形式参数列表) {
方法体
}
2、构造方法的方法名必须和类名一致
3、构造方法 作用?第一创建对象,第二给成员变量赋值
4、构造方法如何调用?new 构造方法名(实参);在堆中开辟空间存储对象
5、如果一个类没有提供任何构造方法,系统默认提供无参的构造方法。但如果已经手动的提供了构造方法,那么系统不会再提供任何构造方法。
6、成员变量到底什么时候赋值?只有在调用构造方法的时候,才会给成员变量赋值。
四、方法的重写
1、什么时候方法要进行重写?
如果父类中的方法已经无法满足子类的业务需求,需要将父类中的方法重新写一遍。
2、子类如果重写弗雷中的方法之后,子类对象一定调用的是重写之后的方法
3、发生方法覆盖的条件
1)发生在具有继承关系的两个类之间
2)必须具有相同的方法名,相同返回值类型,相同的参数列表
3)重写的方法不能比被重写的方法拥有更低的访问权限
4)重新的方法不能比被重写的方法抛出更宽泛的异常
5)是有的方法不能被覆盖
6)构造方法不能被覆盖,因为构造方法无法被继承
7)静态的方法不存在覆盖
8)覆盖指的是成员方法,和成员变量无关。
4、继承最基本的作用:代码重用。继承最重要的作用:方法可以重写。