java实现的困惑?等待

请问各位下面两个的实现有啥区别?孰优孰劣?


public class A
{
public String strA ;
public String strB ;
public A
{
}
}


public class A
{
private String strA ;
private String strB ;
public A
{
}

public void setA(String strParam)
{
strA = strParam
}

public void setB(String strParam)
{
strB = strParam
}

public String getA()
{
return strA ;
}

public String getB()
{
return strB ;
}
}

一个是构造方法赋值 一个set方法,看你喜欢了。

老大们,我关心的是两个的实现有啥区别?孰优孰劣?

看你的A实例等不等着用。急着用就第一种,不着急用第二种。

几点区别,
1 从JAVA BEAN规范说一下, 第一种不是标准的JAVA BEAN写法,第二种则是。
2 从使用方法说一下,第一种这么使用
A a = new A();
设置值时:
a.strA = "goods";
a.strB = 'goods';
获取值时:
String a1 = a.strA;
String a2 = a.strB;
第二种这么使用:
A a = new A();
设置值时:
a.setA("goods");
a.setB("goods");
获取值时:
String a1 = a.getA();
String a2 = a.getB();
3 从以后设置重构和安全性说一下,
如果使用第一种写法,我设计要求属性strA是可获取值,不可设置值时,将没办法完成。
第二种,则很简单,我可以把getA()方法为public 的,setA()为private的,或者在getA(),setA() 中再写判断逻辑。
4 从生成的WIN平台的汇编代说一下,当然是第一种省代码量呀。(本人见解).
最后,所以为了规范及设计重构方便,使用JAVA BEAN规范是最好的(人家都为你想到了,你还在问吗。)

第一种写法不好,把类内部的变量直接暴露在外面,破坏类的封装性。