08-类、对象和方法

方法的重载(overload)

要求:

          1、同一个类中

          2、方法名必须相同

          3、方法的参数列表不同(①参数的格式不同②参数类型不同)

补充:方法的重载与方法的返回值类型没有关系!  

对象作为参数传递的练习

(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。

(2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:public void printAreas(Circle c,int time)

在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积

例如,time为5,则输出半径1,2,3,4,5,以及对应的圆面积

在main方法中调用printAreas()方法,调用完毕后输出当前半径值。

package com.company;

class Circle {
    double radius;

    public double findArea() {
        return Math.PI * radius * radius;
    }

    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 i = 1;
        while (i <= time) {
            c.setRadius(i);
            System.out.println(c.getRadius() + "\t\t\t" + c.findArea());
            i++;
        }
        c.setRadius(i);
    }

    public static void main(String[] args) {
        Circle c = new Circle();
        PassObject p = new PassObject();
        p.printAreas(c, 5);
        System.out.println("now radius is " + c.getRadius());
    }
}


匿名类对象:创建的类的对象是匿名的

(1)当我们只需要一次调用类的对象时,我们就可以考虑使用匿名的方式创建类的对象。

(2)特点:创建的匿名类的对象只能够调用一次!

可变个数的形参

采用数组形参来定义方法

public static void test(int a,String[] books);

以可变个数形参来定义方法

public static void test(int a,String...books);

说明:

1. 可变参数:方法参数部分指定类型的参数个数是可变多个

2. 声明方式:方法名(参数的类型名...参数名)

3. 可变参数方法的使用与方法参数部分使用数组是一致的

4. 方法的参数部分有可变形参,需要放在形参声明的最后 

5. 可变个数的形参的方法与同名的方法之间构成重载

6. 可变个数的形参在调用时,个数从0开始,到无穷多个都可以

7. 在一个方法中,最多声明一个可变个数的形参

方法的参数值传递机制(重点、难点)

1、形参:方法声明时,方法小括号内的参数

     实参:调用方法时,实际传入的参数的值

2、规则:java中的参数传递机制:值传递机制

      1)形参是基本数据类型的:将实参的传递给形参的基本数据类型的变量

      2)形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量

package com.company;

public class TestValue {
    public static void main(String[] args) {
        TestValue tv = new TestValue();
        tv.first();
    }

    public void first() {
        int i = 5;
        Value v = new Value();
        v.i = 25;
        second(v, i);
        System.out.println(v.i);
    }

    public void second(Value v, int i) {
        i = 0;
        v.i = 20;
        Value val = new Value();
        v = val;
        System.out.println(v.i + " " + i);
    }
}

class Value {
    int i = 15;
}

内存图:

输出结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值