我想请问一下红色字体部份的程序,为什么上一句的方法重写是错误的,下一句为什么是方法重写?class Chengji
{
float f(float x,float y)
{
return x*y;
}
}
class Xiangjia extends Chengji
{
float f(float x,float y) //方法的重写,方法的名字,返回值类型,参数个数和类型与父类完全相同
{
return x+y ;
}
//float f(float,x,int y) {return x-y;}错误的语句,在方法名相同的情况下既不属于"重写"也不属于"重载"
//float f(int x,int y,int z){z=x-y; return z;}方法的重写,琢磨一下定义就知道了
}
public class Example
{
public static void main(String args[])
{
Xiangjia sum;
sum=new Xiangjia();
float c=sum.f(4,6);//调用的是子类里的f(),因为子类重写了父类的f()
//c=sum.f(1,2,3); 这个则是调用了重载的函数;当然具体调用那个要根据实参的个数和类型来判断
System.out.println(c);
}
}
{
float f(float x,float y)
{
return x*y;
}
}
class Xiangjia extends Chengji
{
float f(float x,float y) //方法的重写,方法的名字,返回值类型,参数个数和类型与父类完全相同
{
return x+y ;
}
//float f(float,x,int y) {return x-y;}错误的语句,在方法名相同的情况下既不属于"重写"也不属于"重载"
//float f(int x,int y,int z){z=x-y; return z;}方法的重写,琢磨一下定义就知道了
}
public class Example
{
public static void main(String args[])
{
Xiangjia sum;
sum=new Xiangjia();
float c=sum.f(4,6);//调用的是子类里的f(),因为子类重写了父类的f()
//c=sum.f(1,2,3); 这个则是调用了重载的函数;当然具体调用那个要根据实参的个数和类型来判断
System.out.println(c);
}
}
解决方案 »
- 跪求javaSE的高手啊!关于socket!
- 谁能帮我备注一下这个冒泡,初学者看不懂
- 请教一个正则表达式的写法
- 关于数组的一个简单问题~
- 为什么我的Eclipse 3.1.0不能进行调试?
- 大家觉得张孝祥的java视频教程基础篇和高级篇怎么样,给点建议小弟准备买!谢谢!
- 关于jList。jdbList控件的应用(毕业设计急用),请教,谢谢!
- applet请教
- 如何理解指令重排?
- Java练习:创建一个Person类 ,其定义如下: 要求:在上一练习基础上给类增加2个构造方法,其中一个构 造方法没有参数,年龄值为1,性别为0;
- 为什么会在编写程序的时候出现乱码?
- weblogic 8.1.6自动关闭问题
你要被重写的方法也要加abstract
而且要被重写的方法应该是一个空的方法
在你这里应该是
abstract class Chengji
{
/*float f(float x,float y)
{
return x*y;
}*/
abstract void f(){
}
}
只有这样 你的方法才能被任意重写
上一句的方法参数类型不同,当然不是重写了。
下一句通过传入三个参数,函数的功能不同了,所以叫重写了那个函数?汗具体也不知道怎么说了。。话说楼上 abstract void f() {}
应该是abstract void f();不能有函数体的。
//float f(float,x,int y) {return x-y;}错误的语句,在方法名相同的情况下既不属于"重写"也不属于"重载" float ,x 这能不错吗?
float f(float x,int y) {return x-y;}肯定是重载.f(4f,6)调用的就是子类方法,因为参数是float,int.f(4f,6f)一定是父类方法,因为float,float父类一定要加abstract什么乱七八糟的东西怎么想得出来的
//float f(int x,int y,int z){z=x-y; return z;}方法的重写,琢磨一下定义就知道了 这个方法就声明错了啊 老大f(float,x,int y)改为f(float x,int y)试试