Home

韧桂

思考,总结

对象作为参数传递的练习&匿名类对象的使用

package six;
/*
1、将对象作为参数传递给方法。
题目要求:
(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。
(2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:
		public void printAreas(Cirlce c, int time)
在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。
在main方法中调用printAreas()方法,调用完毕后输出当前半径值。程序运行结果如图所示。
 */
/*
1. 匿名类对象:创建的类的对象是匿名的。
    1)当我们只需要一次调用类的对象时,我们就考虑使用匿名的方式创建类的对象。
    2)特点:创建的匿名类的对象只能够调用一次!
 */
class Circle{
    double radius;

    public double findArea(){
        return Math.PI * radius * radius;
        //return Math.PI * getRadius() * getRadius();
    }
    public void setRadius(double r){
        radius = r;
    }
    public double getRadius(){
        return radius;
    }
}


public class PassObject {
    public void printAreas(Circle c,int time) {
        System.out.println("Radius" + "\t\t" + "Area");
//        int temp = 0;
//        for(int i = 1;i <= time ;i++,temp = i){
//            c.setRadius(i);
//            System.out.println(c.getRadius() + "\t\t" + c.findArea());
//        }
//        c.setRadius(temp);
        int i =1;
        while(i <= time){
            c.setRadius(i);
            System.out.println(c.getRadius() + "\t\t" + c.findArea());
            i++;
        }
        c.setRadius(i);
    }

    public static void main(String[] args) {
        PassObject p = new PassObject();
        Circle c = new Circle();//此时c的半径为0。
        p.printAreas(c,5);

        System.out.println("now radius is " + c.getRadius());
        System.out.println();

//        //匿名类Circle
//        p.printAreas(new Circle(), 6);
//        new Circle().setRadius(2.3);
    }
}

韧桂 2019-12-24