Java用类名做类型时,怎么跟换类名后就不行了,如题

class Main {
public static void main(String[] args) {
o yu=new o();//圆对象
pp kk=new pp();//
kk.are(yu);//对象名为圆的实参。调用圆面积的
// 方法
}
}

class o{//圆类
double r;
public double mj(){ //计算圆面积的方法
return 3.14rr;
}
}

class pp{ //给圆赋半径的方法
public void are(o ares){
//同样是类 都能定义引用型,为什么把形参的o//改成pp就不行。
ares.r=3;
System.out.print(ares.mj());

}

}

1、形参变了之后,调用的地方也需要传对应的参数
2、形参类型变了,更改后的形参pp类中并没有提供计算面积mj的方法

public class Test {
    public static void main(String[] args) {
        pp kk=new pp();//
        kk.are(kk);//对象名为圆的实参。调用圆面积的
    }
}
class o{//圆类
    double r;
    public double mj(){ //计算圆面积的方法
        return 3.14*r*r;
    }
}

class pp{ //给圆赋半径的方法
    public void are(pp ares){
//同样是类 都能定义引用型,为什么把形参的o//改成pp就不行。
        o o=new o();
        o.r=3;
        System.out.print(o.mj());
    }
}

没有在主函数内进行调用

你把函数定义的o改成了pp,那么函数调用的时候也要把yu改为kk呀,否则类型不一致能不报错吗
此外,你的o是个实体类,里面有属性
而pp里面只有方法
你改为pp之后,是找不到pp.r这个属性的,除非你把o里的属性r也一起拿到pp里来

主函数中kk.are方法传入的是一个o对象,你在修改了kk.are的形参为pp,所以主函数中kk.are就要传入一个pp对象才行

package com.test.xsj.dev;

import java.math.BigDecimal;

/**

  • @author xsj
  • @date 2022/7/4 16:43
  • /
    public class Main {
    public static void main(String[] args) {
      o yu = new o();//圆对象
      pp kk = new pp();//
      kk.are(yu);//对象名为圆的实参。调用圆面积的
    
    // 方法
    }
    }

class o {//圆类
double r;

public double mj() { //计算圆面积的方法(精确计算)
    return BigDecimal.valueOf(3.14).multiply(BigDecimal.valueOf(r*r)).doubleValue();
}

}

class pp { //给圆赋半径的方法
public void are(o ares) {
//同样是类 都能定义引用型,为什么把形参的o//改成pp就不行。
ares.r = 3;
Double s = ares.mj();
System.out.print("圆面积:" + s);
}
}