面向对象程序设计专家进,菜鸟跪求解惑!!

来源:百度知道 编辑:UC知道 时间:2024/05/27 11:55:55
请问下面两段代码在本质上有什么区别
代码①:
class User
{
private String name;
public void setName(String name)
{ this.name=name;}
public String getName()
{return name}
}
public class Test
{
public static void main(Stringp[] args)
{
User user=new User();
user.setName("zhangsan");
System.out.println(user.getName());
}
}
代码②:
class User
{
public String name;
}
public class Test
{
public static void main(Stringp[] args)
{
User user=new User();
user.name="zhangsan";
System.out.println(user.name);
}
}
为什么说第一个比第二个安全?说的详细点啊
别人不是可以使用user.setName()来更改1中的名字吗?为什么说别人不能更改??我就是不明白这一点

这个是面向对象数据封装问题.
把不希望别人更改但是又可以被人访问的属性-->作为私有属性,但是可以通过公有方法进行访问
User user=new User();
user.setName("zhangsan");
user.getName();
创建了一个User对象,给他的名字是zhangsan.这样user对象具有name属性是属于他个人所有。谁都不可以更改。
你可以访问user.getName()他的名字,但是不能更改他的名字。
1比2安全是说:
1中名字可以被访问但不能被更改
2中名字可以被任何人更改.
就象你自己的名字,你可以让别人知道你的名字,但你肯定不希望任何人见到你就能给你改个名字.
1 就可以实现这种目标,而2却不能