java编程问题 新手求助 出现如下图问题

class A{
public int f(int a,int b){
if(a>b){
int temp=a;
a=b;
b=temp;}
if(b%a==0) return a;
else return f(a,b%a);}}
class B extends A{
public int f(int a,int b){
int m;
m=super.f(int a,int b);
return a*b/m;}}
public class MaxandMin{
public static void mian(String args[]){
A a=new A();
B b=new B();
System.out.println("最大公约数为:"+a.f(int a,int b));
System.out.println("最小公倍数为:"+b.f(int a,int b));}}图片说明

5个回答

m=super.f(int a,int b);
->
m=super.f(a,b);
别的类似

调用方法不用加参数的类型。随便建议你用个IDE写代码,就不用手动编译了

super和this只能放在方法调用的第一行,另外,粘代码时请使用code标签,这样代码没办法看,格式太乱了

int m;
m=super.f(a,b);
return a*b/m;}
System.out.println("最大公约数为:"+a.f(10,20));
System.out.println("最小公倍数为:"+b.f(10,20)); 这样就好了

存在两个问题

1.语法问题

1.1 方法在定义的时候,参数是带类型的;
1.2 方法在调用的时候,参数是不带类型的,需要传入的对应类型的值或者对象的应用;

2.覆盖父类递归方法导致的逻辑错误

2.1 子类覆盖父类的方法,默认使用子类的方法;
2.2 使用super,可调用父类被覆盖的方法;
2.3 父类递归中的方法如被子类覆盖,则调用子类的方法;
个人建议:如无特别情况,绝不要覆盖父类的递归方法同时调用父类的递归方法;
正确写法:
正确写法上
正确写法下
注:
fb方法(图中第20行)m=super.fa(a,b);可不用加super,因为fa方法未被覆盖。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!