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;
/**
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);
}
}