java中关于封装疑问?

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

可以用构造函数参数传递。比如
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);

类的构造函数实例化对象(使用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函数给私有变量进行赋值。

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