重载方法中,数据类型的优先级以及重写(覆盖)

重载方法中,数据类型的优先级

今天刷题的时候,刷到了一道题,代码如下:
public class Demo {
public static void go(Long n) {
System.out.println(“Long”);
}
public static void go(Short n) {
System.out.println(“Short”);
}
public static void go(int n) {
System.out.println(“int”);
}
public static void main(String[] args) {
short y = 6;
long z = 7;
go(y);
go(z);
}
}
在这里插入图片描述输出结果
刚开始我选的时候选的是(Short和Long),结果错了,答案是(int和Long),想了很久为什么Short会变成int,然后查了一下资料,就明白了,重载go方法的时候,Long和Short是封装类型,然后int是基本数据类型,但是在重载方法中,参数是包装类的优先级比基本类型的转换还要低,如果将上述代码改成如下
public class Demo {
public static void go(Long n) { //2
System.out.println(“Long”);
}
public static void go(Short n) { //1
System.out.println(“Short”);
}
public static void go(Integer n) {
System.out.println(“int”);
}
public static void main(String[] args) {
short y = 6;
long z = 7;
go(y);
go(z);
}
}
输出结果显示:
描述输出结果
就可以啦!!!!
ps:方法重写是指子类继承父类的某个方法,那么子类的这个方法的名字,参数类型,参数个数,与父类的方法完全相同

目的:

子类通过方法重写可以隐藏继承的方法,即改变继承的父类方法中具体的参数值,来达到修改自身状态和行为。

注意事项:

重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限(访问权限从高到低的顺序是:public 、protected 、友好的 、private。友好的是指:不用public 、protect 、private修饰的)
如以下例子:

class A{
 protected float f(float x,float y){
 return x+y;
 }
}
class B extends A{
 float  f(float x,float y){   //非法,访问权限由protected降低成了友好的
 return x-y;
 }
}
class C extends A{
 public float f(float x,float y){ //合法,访问权限由protected提高到了public
 return x*y;
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值