java中关于封装疑问?

一个类的成员变量被封装起来,可以在创建对象的时候直接赋值嘛

3个回答

可以用构造函数参数传递。比如
class A
{
private int x;
private int y;
public A(int x, int y) { this.x = x; this.y = y; }
}

那么
A a = new A(1, 2);

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复forver1314: 两者不矛盾,也可以用get/set。因为你问“在创建对象的时候”,所以使用构造函数。
3 年多之前 回复
forver1314
forver1314 谢谢您的解答,为社么如果写了有参构造函数,就可以直接传参了呢,省略用getset方法
3 年多之前 回复

类的构造函数实例化对象(使用new关键字)时调用,可以在构造函数中初始化对象的各个属性。

 public class Employee {
    private String firstName = null;
    private String lastName  = null;
    private int    birthYear = 0;

    public Employee(String first,
        String last,
        int    year   ) {
        firstName = first;
        lastName  = last;
        birthYear = year;
    }
}

get/set在Java、C#语言中普遍使用,最核心的意图是保护类私有成员。

构造函数可以初始化变量,这个我们都清楚。
但是很多时候我们在构造函数中给私有变量赋值时,会直接给私有变量赋值,这其实就破坏了Java的封装特性。
一般正确的做法是在构造函数中调用set函数给私有变量进行赋值。

还有一点需要了解的是,我们赋值可以在创建对象的时候赋值(使用构造函数),也可以在创建对象后进行辅助,
但是,当我们创建一个对象,并且该对象创建完后不能对他再进行更改的时候,就必须在构造函数中赋值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问