Java基础(六)-方法函数

方法/函数

将一段逻辑或者功能提取出来,这种提取的形式就是函数

格式

修饰符 返回值类型 函数名(参数列表){

方法体;

return 返回值;

}

//明确返回值类型---求两个整数的和,确定结果一定是整数---返回值类型是int
//明确函数执行过程中是否有未知量参与---求两个整数的和,这两个整数在函数执行过程中不能自动产生,是两个未知量,未知量需要以参数的形式体现
//定义参数相当于在声明了几个变量
//在函数中声明的参数---形参---形式参数
//函数名+参数列表---方法签名---add(int i, int j)
public static int add(int i, int j){
	int sum = i + j;
	return sum;
}
//调用函数的时候传入的实际值---实参---实际参数
add(3,5);

实参(argument):
  全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。      
形参(parameter):
全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。形式参数:形参是函数被调用时用于接收实参值的变量。

注意

1.如果函数没有返回值,那么返回值类型定义为void

2. return后续的代码不再执行

3. 任何一个实体函数都有return语句

构造方法

在类中与类同名而没有返回值类型的方法---主要是用于创建对象

构造方法可以重载

如果一个类没有手动提供构造函数,那么JVM在编译的时候会添加一个无参的构造方法。

构造方法没有返回值类型,也没有返回值,能写return语句吗?---可以---规避风险


重载

一个类中存在了函数名一致,而参数列表不一致的函数的时候,称这多个函数之间构成了重载。

函数在调用的时候会最先匹配格式最一致

当进行函数重载的时候,尽量重载所有的情况,以防出现多个函数都匹配的情况

练习

1.任何一个大于等于6的偶数都可以分解成两个质数的和

14 = 3 + 11

14 = 7 + 7


2. 亲密数:如果A的所有因数(含1,不含本身)之和等于B,且B的所有因数之和(含1不含本身)等于A,A和B是一对亲密数。输出3000以内所有的亲密数


重写

在父子类中存在了方法签名完全一致的方法---产生了方法的重写

注意:方法的重写遵循 两等两小一大 这五个要求

1. 方法签名要求完全一致

2. 如果父类中方法的返回值类型是基本类型/void/最终类,子类中重写的方法的返回值类型必须一致

3. 如果父类方法的返回值类型是引用数据类型,那么子类重写的方法的返回值类型是父类方法返回值类型的子类或者是本身

class A {}
class B extends A{}
class C{
public A m(){
return null;
}
}
class D extends C {
public B m(){
return null;
}
}

4.子类抛出异常小于等于父类方法抛出异常

5. 子类方法的权限修饰符的范围要大于等于父类方法的权限修饰符的范围

class A{
protected void m(){}
}
class B extends A{
public void m(){}
}

权限修饰符

用于限定变量或者方法的使用范围的

 

本类中

子类中

同包类中

其他类中

public

可以

可以

可以

可以

protected

可以

可以

可以

不可以

默认

可以

同包子类可以

可以

不可以

private

可以

不可以

不可以

不可以


函数的递归

指在函数中调用自己本身

StackOverflowError---栈溢出错误---反应函数在栈中执行---函数在执行完成之前不会释放栈内存---递归的次数太多,就会出现这个错误


注意:基本数据类型传参传的是实际值,对于引用类型而言传参传的是地址

练习:求任意一个数的阶乘


发布了0 篇原创文章 · 获赞 11 · 访问量 2414
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章