JAVA:什么时候方法需要形参

第一个程序:

public class y1{
    //main函数
    public static void main(String[] args){
        Circle c1 = new Circle(7.7);
        System.out.println("周长" + c1.perimeter());
        System.out.println("面积" + c1.area());
    }
}
class Circle{
    //属性
    double radius;
    //构造方法
    public Circle(double radius){
        this.radius = radius;
    }
    //方法
    public double perimeter(){
        return Math.PI * 2 * radius;
    }
    public double area(){
        return Math.PI * radius * radius;
    }
}

为什么Circle方法和perimeter方法不需要形参?

第二个程序:

public class y2{
    //main函数
    public static void main(String[] args){
        Cale cale1 = new Cale(3.0,0);
        System.out.println("和:" + cale1.add());
        System.out.println("减:"+cale1.sub());
        System.out.println("乘:"+cale1.mul());
        Double didRes = cale1.did();
        if(didRes != null){
            System.out.println("除:"+ didRes);
        }
    }
}

class Cale{
    //两个属性
    double n1;
    double n2;
    //构造方法
    public Cale(double n1,double n2){
        this.n1 = n1;
        this.n2 = n2;
    }
    //四个方法
    public double add(){//不需要形参吗?
        return n1 + n2;
    }
    public double sub(){
        return n1 - n2;
    }
    public double mul(){
        return n1 * n2;
    }
    public Double did(){
        if(n2 == 0){
            System.out.println("请重新输入,因为n2<0");
            return null;
        }else{
            return n1 / n2;
        }
    }
}

为什么add/sub/mul/did方法也都不需要形参?

上面两个程序的方法为什么都不需要形参?他们是怎样得到值的?
但是为什么有时候写别的代码时需要形参?

你的对象有这两个参数,而你初始化的时候又对这两个属性赋值了值,那就可以在本类中获取使用

img