类与对象 java

package com.student.WeekThree;

public class Methodtransfer {
    public static void main(String[] args){
        Dog dog = new Dog();
        System.out.println("原始信息:" + dog.age + " " + dog.name);


        ChangeDog changedog = new ChangeDog();
        changedog.changeOne(dog);
        System.out.println("调用且将对象置空:" + dog.age + " " + dog.name);


        changedog.changeTwo(dog);
        System.out.println("调用且更改对象属性:" + dog.age + " " + dog.name);

        changedog.changeThree(dog);
        System.out.println("调用 后赋予新开辟空间的地址:" + dog.age + dog.name);

        Dog dogplus = new Dog();
        CopyDog copydog = new CopyDog();
        dogplus = copydog.copy(dog);
        System.out.println("原始dog:" + dog.age + dog.name);
        System.out.println("克隆dog:" + dogplus.age + dogplus.name);
    }
}
class Dog{
    String name = "泡泡";
    int age = 1;

}
class ChangeDog{
    public void changeOne(Dog dog){
        dog = null;
    }
    public void changeTwo(Dog dog){    //当参数为对象时  在调用方法时改变对象的属性  所传进来的对象的属性会改变,但该对象的模版Dog不会改变
        dog.name = "橙子";
        dog.age = 2;
    }
    public void changeThree(Dog dog){   //形参dog和实参dog 都指向同一个地址即同一片空间  但二者并不是同一个对象
        dog = new Dog();
        dog.age = 3;
        dog.name = "卷卷";
        System.out.println("在changeThree里的输出:" + dog.age + dog.name);
    }
}
class CopyDog{
    public Dog copy(Dog dog) {    
        Dog dog1 = new Dog();  //dog1指向一个新地址
        dog1 = dog;
        return dog1;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值