java中方法的重载与重写

java中方法的重载与重写

1.方法重载

在同一个类中,方法名相同,参数列表不同(参数位置、参数个数、参数类型),与返回值类型无关
问题:为什么需要所谓的方法的重载?

原因:多个方法具有相同的功能特性,但是呢,每个功能的实现方式可能不同

 //需求:求较大值(两个数)
public static int max(int x,int y){
    if(x>y){
        System.out.println(x);
    }else{
       	 System.out.println(y);
    }
}
//求较大值(三个数)
public static int max(int x,int y,int z){
    if(x>y){
    	if(x>z){
            System.out.println(x);
        }else{
            System.out.println(z);
        }
    }else{
        if(y>z){
            System.out.println(y);
        }else{
            System.out.println(z);
        }
    }
}
//案例
public static void main(String[] args){
    int x = 5;
    int y = 6;
    int z = 7;
    max(x,y,z);
}

//需求:求较大值(两个数)
public static void max(int x,int y){
    System.out.println("-----------");
    if(x>y){
        System.out.println(x);
    }else{
        System.out.println(y);
    }
}
//类型不同
public static void max(byte a,int b){
    if(a>b){
        System.out.println(a);
    }else{
        System.out.println(b);
    }
}

/*public static int max(int a,byte b){
		if(a>b){
			System.out.println(a);
		}else{
			 System.out.println(b);
		}
		return 0;
	}*/
//位置不同
public static void max(int a,byte b){
    if(a>b){
        System.out.println(a);
    }else{
        System.out.println(b);
    }
}
//个数不同
//求较大值(三个数)
public static void max(int x,int y,int z){
    if(x>y){
        if(x>z){
            System.out.println(x);
        }else{
            System.out.println(z);
        }
    }else{
        if(y>z){
            System.out.println(y);
        }else{
            System.out.println(z);
        }
    }
}

2.方法重写

在继承或实现的关系下,方法名相同,参数列表相同,返回值类型相同,子类的修饰符权限要大于或等于父类中的修饰符权限

@Override,如果方法上有该注解,那就意味着该方法一定是从父类中重写的,如果没有,那么该方法就只是该类中的一个方法而已,此时需要注意的是,如果没有加@override,但是父类中有该方法,虚拟机仍然会认为,该方法为重写的方法,如果父类中没有该方法那就是一个普通方法而已,不会报错

//抽象类
public abstract class CatKinds {

	//abstract告诉虚拟机这是一个抽象方法
	public abstract void eat() ;
	
	public void climbTree() {
		System.out.println("爬树");
	}
}

public class Cat extends CatKinds{

	@Override
	public void eat() {
		System.out.println("小口吃");
	}

	public void climbTree() {
		System.out.println("快速灵敏的爬树");
	}
}

3.问题:抽象方法不能与哪些关键词共存?为什么?

回答:static、final、private
问题:抽象方法能否为静态的?

回答:静态方法可以通过类名直接调用,而抽象方法是没有方法体的,调用就没有任何的意义

问题:抽象方法能否为私有的?

回答:私有的方法只能在当前类中使用,当前类中进行调用,没有任何意义,因为没有方法体

问题:抽象方法能否使用final关键字修饰?

回答:不允许的,抽象方法是需要被子类重写的,而final关键字修饰的方法代表最终方法,不能被修

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值