方法重载概述
– 在同一个类中, 允许存在一个以上的同名方法, 只要它们
• 方法重载特点
– 与返回值类型无关, 只看方法名和参数列表
– 在调用时, 虚拟机通过参数列表的不同来区分同名方法
复制代码
package methodmethodchongzai;
public class MethodChongZai {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
Systemoutprintln(sum(a,b,c));
Systemoutprintln(sum(a,b));
}
public static int sum(int a,int b) {
int c = a + b;
return c;
}
public static int sum(int a,int b,int c){
int d = a + b + c;
return d;
}
}
复制代码
输出如下:
复制代码
package methodmethodchongzai;
public class ChongZai2 {
public static void main(String[] args) {
//定义变量
int a = 10;
int b = 20;
//求和方法
int result = sum(a,b);
Systemoutprintln("result:"+result);
//定义变量
int c = 30;
//求和方法
//int result2 = sum2(a,b,c);
int result2 = sum(a,b,c);
Systemoutprintln("result2:"+result2);
}
//不能出现方法名相同,并且参数列表也相同的情况
// public static int sum(int x,int y) {
// return x + y;
// }
public static float sum(float a,float b) {
return a + b;
}
//求三个数据的和
/
public static int sum2(int a,int b,int c) {
return a + b + c;
}
/
public static int sum(int a,int b,int c) {
return a + b + c;
}
//求两个数据的和方法
public static int sum(int a,int b) {
//int c = a + b;
//return c;
return a + b;
}
}
复制代码
输出结果:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
static与abstract,它们不能同时用于修饰一个方法。因为abstract的语义就是说这个方法是多态方法,需要subclass的实现。而static方法则是在本类中实现的,编译期绑定,不具有多态行为。
synchronized同步,也是一样的道理,具体可以参考JAVA语言规范
class OverloadDemo{
void test(){
Systemoutprintln("No paramteters");
}
//含两个整形参数
void test(inta,intb){
Systemoutprintln("a and b:"+a+""+b);
}
//含有一个双精度参数
void test(double a){
Systemoutprintln("Inside test(double)a:"+a);
}
class Overload{
public static void main(String args[]){
OverloadDemo ob =new OverloadDemo();
int i =88;
obtest();
obtest(10,20);
obtest(i); //这里将调用test(double)
obtest(123,2); //这里调用test(double)
}
}
public class Person {
private String gender;
public String getGender() {
return gender;
}
public void setGender(String gender) {
thisgender = gender;
}
public static void main(String[] args) {
Person p = new Person();
Dog dog = new Dog();
psetGender("女");
dogyao();
dogyao("猪");
dogyao(p);
}
}
class Dog{
public void yao(){
Systemoutprintln("汪汪叫");
}
public void yao(String str){
Systemoutprintln("咬"+str+"骨头,好香啊");
}
public void yao(Person p){
String gender = pgetGender();
switch (gender) {
case "男":
Systemoutprintln("扑上去撕咬");
break;
case "女":
Systemoutprintln("扑上去舔两口");
break;
default:
Systemoutprintln("请输入正确的性别,只能为'男'和'女'!");
break;
}
}
}
模拟退火算法
Java基础06-方法的定义、声明、使用、重载
1方法
方法是Java中一个明名的代码块,如同在数学中用到的函数,其他语言常常直接称为函数。
方法 通常是为了完成某一个特定功能,把程序中特定的代码组合到一起而构成的,其主要好处体现在两个方面:
一个是重用,另一个是使程序结构更加清晰。
方法的声明语法如下:
[修饰符] 返回值类型 方法名(形参列表){
方法体;
}
在Java 中,修饰符为访问者的权限大小,public 、protected、default、private、权限范围不同。
返回值类型 为数据类型 也就是说 你让方法完成了某项功能要不要返回一个结果,或者说你让程序做事
要不要程序给你个结果,所以返回值类型可以写成void即不需要返回什么,
返回值类型可以是基本数据类型也可以是引用类型
如果方法有返回值,那么方法体中必须写上“return 返回值;”,返回值的类型必须和方法上规定的返回值类型一致,
方法名可以重复和但不能使用关键字,方法中的形参其实就是你想让方法完成功能,给方法传输参数,形参是传入参数的类型
的一种表达,就好比你要让方法算两个人年龄的综合,你的传入两个int类型的参数,不然数据无法计算
例如:
public int all(int age1,int age2){
return age1+age2;
}
方法返回的是两个数的和。
无参数方法很简单:
注意:静态方法调用需要加上静态修饰符static
例如:
图中c=function();
说明function()本身就是一个值;
所以可以省略一定的步骤:
直接Systemoutprint(function());
输出的结果照样是:15
注意:方法有参数不一定有返回值,有返回值不一定有参数,并且方法执行遇到return就结束了,不会执行下面代码,并且return下面写的代码会报错。
例如:
return 0;
int a=0;
语法错误,编译不通过
2方法的使用。
(1)注意方法的修饰符,决定了方法的使用范围,
(2)方法的调用:方法也可以自己调用自己,(递归)。
(3)方法如果没有返回值也可以return;只不过return后面不加参数
方法重载说简单点就是方法的权限、返回值类型、方法名都一样,根据参数的个数或类型不一样,这就是方法重载。
比如说:
public void print(String str){}
public void print(int i){}
public void print(String str[]){}
public void print(String str, int i){}
就是这种。
在java中,如果两个方法名相同,但参数项不同,那么可以认为一个方法是令一个方法的重载方法,此过程称为“方法重载”。
参数项不同:
①参数个数相同,类型不 同
②参数个数不同
尽信书则不如无书。
以上就是关于java方法的重载全部的内容,包括:java方法的重载、java的方法重载、java重载详例等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)