新手求助-有关信息隐藏

cjh1525354555 2010-09-06 09:56:00
各位高手,小弟有个问题想请教一下。
在Student类里有Bag类型的成员(bag),我想做以下功能
新建一个学生类的对象(aStudent)之后的第一次对该aStudent的成员bag赋值,
之后不让其它语句修改aStudent的成员bag;

Student类和Bag类在下面。麻烦各位帮我看看能不能达到这个效果,或者有其它更好的方法。

package learning.myclazz;

public class Student {
private String name;
private int age;
private Bag bag;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Bag getBag() {
try {
return bag.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return null;
}

public void setBag(Bag bag) {
if (this.bag == null) {
this.bag = bag;
}
}

public Student() {
name = "mike";
age = 12;
}

public void write() {
System.out.println("My name is " + name);
System.out.println("I'm " + age + " years old!");
}
}


package learning.myclazz;

public class Bag implements Cloneable {
private String bagColor;
private double bagWeight;

public String getBagColor() {
return bagColor;
}

public void setBagColor(String bagColor) {
this.bagColor = bagColor;
}

public double getBagWeight() {
return bagWeight;
}

public void setBagWeight(double weight) {
this.bagWeight = weight;
}

public Bag() {
this.bagColor = "yellow";
this.bagWeight = 500.00;
}

public Bag(String bagColor, double bagWeight) {
this.bagColor = bagColor;
this.bagWeight = bagWeight;
}

@Override
protected Bag clone() throws CloneNotSupportedException {
return (Bag) super.clone();
}

public void write() {
System.out.println("A bag . Color :" + this.bagColor);
System.out.println("Weight: " + this.bagWeight);
}
}
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianxianxian 2010-09-07
  • 打赏
  • 举报
回复
没啥不好影响..
cjh1525354555 2010-09-07
  • 打赏
  • 举报
回复
把一个类类型的参数放在构造函数里面,会有什么不好的影响吗?请问
dlnuzwh 2010-09-07
  • 打赏
  • 举报
回复
可以用final 进行修饰,用final 只能对变量进行一次赋值操作。可以通过一下两种方式:
(1)语句块赋值:
class Student {
private String name;
private int age;
public final Bag bag ;//表明只能进行一次赋值

{ //如果bag确定的情况下,可以这样用
bag = new Bag();
}

}
(2)构造赋值
class Student {
private String name;
private int age;
public final Bag bag ;//表明只能进行一次赋值

public Student(Bag bag){
this.bag = bag;
}
}
qq378166396 2010-09-06
  • 打赏
  • 举报
回复
意思是把bag初始化后就不再去修改了是吧,把setbag方法去掉是可以的,属性的初始化放在构造函数里。。。
jingWithme 2010-09-06
  • 打赏
  • 举报
回复
setbag就不需要了吧,在构造方法里面初始化不就行了嘛?

好像你是要先声明一个学生变量,然后单独给bag赋值。
tangzhiyou_1129 2010-09-06
  • 打赏
  • 举报
回复
单例模式可以实现。构造方法为private
jack1999ok 2010-09-06
  • 打赏
  • 举报
回复
在Student的构造方法中初始化Bag类型的成员(bag)
zx343554806 2010-09-06
  • 打赏
  • 举报
回复
不是很懂你的意思..

不过按照你的说法.不想让别的语句有权限修改那个bag类型的值的话.
将set方法都去掉就行了..首次赋值在有参构造方法里面赋值..

顺带.每天10天..
joejoe1991 2010-09-06
  • 打赏
  • 举报
回复

每天十分。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧