java final 实例_final 实例 - JAVA码猿的个人空间 - OSCHINA - 中文开源技术交流社区...

public class Person {

private final int age;// 只声明 没有初始化 不能用 和 int age = 10 不一样

private final Dog dog; // 直接赋值时为常量 常量大写 可用static public 修饰 不可变 不灵活

public Person() { // 用 构造方法可以初始化操作 赋初始值

this.age = 20; // 在这个构造器中 只能初始化一次 在另一个构造器中还可以赋值 两个构造器平行

dog = new Dog();// 自定义类初始化;

}

public Person(int age, Dog dog) {

this.age = age;

this.dog = dog;

}

void setAge(int age) { // 进行赋值

// this.age = age;

}

int getAge() {

System.out.println(this.age);

return age;

}

void setDog(Dog dog) { // 无法用 set 方法 赋值 fianl 修饰的自定义类 地址不变

// 可以新开辟内存地址赋值

// this.dog = dog;

//System.out.println(this.dog);

}

Dog getDog() {

System.out.println(this.dog);

return dog;

}

}

Dog类中的属性可以改变 Person类中定义的final Dog类是地址值不变 但是可以改变 Dog中的属性

public class Dog {

private String name;

private String color;

void setName(String name) {

this.name = name;

}

String getName() {

System.out.println(this.name);

return name;

}

void setColor(String color) {

this.color = color;

}

String getColor() {

System.out.println(this.color);

return color;

}

public Dog(){

}

}

注意 构造方法 是用来初始化赋值的 普通 set 方法是用来赋值的 也叫设置值 有区别

public class TestFinal {

public static void main(String args[]) {

Person per = new Person();

per.getAge();

per.getDog();

Dog dog = per.getDog();

dog.setColor("blank");

dog.getColor();

Dog dog1 = new Dog(); // final 修饰的Dog类 是个地址 地址实例化进行构造器传值

Person person = new Person(20, dog1);// 构造器传值调用一次

dog1.setName("Mosa");

dog1.setColor("Yello");// 方法传值可以调用多次

dog1.getName();

dog1.getColor();

person.getDog().getName();

person.getDog().getColor();

Dog d = person.getDog();

d.setColor("Green");

d.getColor();

}

}

有两个行参的构造 dog1 是实例化的 注意 一个形参构造和两个形参构造传值调用输出的地址值不一样

227cf466168dd098c56ced67a7d9f2e7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值