JAVA重载题目!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 00:04:50
class super{
public float getNum(){
return 3.0f;
}
}

public class sub extends super{
_______

}
横线处填入下面那一条语句不会报错______
A. public float getNum(){return 4.0f;}
B. public void getNum(){}
C. public void getNum(double d) {}
D. public double getNum(float d) { return 4.0f;}

请说下为什么。。

抛出类名是关键字来谈,(我们谈的是重写和重载的问题)
首先澄清一个概念,什么是重载:
在一个类中(注意),如果有多个方法具有相同的名称,而有不同的参数,这种行为叫做方法的重载;
构成方法重载的四条基本原则:
1,方法名相同;
2,参数列表必须不同;
3,返回值可以不同,(也可以相同;)
4,可以相互调用;
另外,注意,方法的重载是发生在同一个类中;

还有一种子类继承父类,子类存在与父类方法名相同,参数相同,返回值相同叫做方法的重写(或者覆盖)

以上的问题即存在重写也存在重载的问题,
A,是方法的重写,(方法名相同,参数相同,返回值相同)
B,会报错,重写父类方法,返回值不匹配(重载第二条不符合)
C,D子类继承父类,那么子类也就有父类的方法,是在同一个类中,也符合重载的四条基本原则是重载

在方法的重载中的时候,不能将返回值的不同当成两个方法的区别;
也就是说,在同一个类中,不能有这样的两个方法,他们的方法名相同,参数相同,只是方法的返回值不同,编译就报错了,B就是这种情况

答案:不会报错的是ACD 但只有CD是重载

首先指出一个错误,super是关键字,不能作为类名。
正确答案是D,因为方法重载方法名相同,但必须参数不能完全相同或者返回类型不同。

A是实现了方法的重载,CD都没有重载父类中的方法,相当于在子类中重新定义了方法。
答案是ACD

class super{

public class sub extends super{
这两行是不能通过编译的

super是JAVA的关键字,是不容许作为类名的~~

A。原因就是重载的时候修饰符和参数跟父类一致,只是方法体不一样

其实,填哪一条都会报错,因为super是关键字,根本不能拿来当作类名