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;
}
}
类与对象 java
于 2024-03-21 09:45:11 首次发布