Java 同一类和不同类中私有实例变量访问的差异 公共类购物车{ 私有字符串id; private List rentedMovies=new ArrayList(); 私人长期租金; 私人长途运输; 公共购物车(购物车会话部分){ this.id=sessionCart.id; this.rentedMovies=sessionCart.rentedMovies; this.totalRent=sessionCart.totalRent; this.cartimescont=sessionCart.cartimescont; } .... }

Java 同一类和不同类中私有实例变量访问的差异 公共类购物车{ 私有字符串id; private List rentedMovies=new ArrayList(); 私人长期租金; 私人长途运输; 公共购物车(购物车会话部分){ this.id=sessionCart.id; this.rentedMovies=sessionCart.rentedMovies; this.totalRent=sessionCart.totalRent; this.cartimescont=sessionCart.cartimescont; } .... },java,Java,我对java中的构造函数概念有点困惑。在上面的示例代码中,我声明了一个Cart构造函数,其参数为Cart(可以引用另一个Cart对象)。正如我们在示例类中所看到的,所有实例变量都是私有的,如何通过引用sessionCart直接访问Cart类的私有变量。理想情况下,我不能这样做 请提供帮助。privateaccess修饰符允许访问包含private成员的同一类中的任何代码,无论该访问是访问当前实例的成员还是其他实例 这允许compareTo和clone等方法以及复制构造函数访问同一类的不同实例的p

我对java中的构造函数概念有点困惑。在上面的示例代码中,我声明了一个Cart构造函数,其参数为Cart(可以引用另一个Cart对象)。正如我们在示例类中所看到的,所有实例变量都是私有的,如何通过引用sessionCart直接访问Cart类的私有变量。理想情况下,我不能这样做


请提供帮助。

private
access修饰符允许访问包含
private
成员的同一类中的任何代码,无论该访问是访问当前实例的成员还是其他实例


这允许
compareTo
clone
等方法以及复制构造函数访问同一类的不同实例的
private
字段。

private
访问修饰符允许访问同一类中包含
private
成员的任何代码,无论访问权限是当前实例的成员还是其他实例的成员


这允许
compareTo
clone
等方法以及复制构造函数访问同一类的不同实例的
私有
字段。

访问范围与“哪个对象访问哪个其他对象的值”无关,而与“哪个代码(来自哪个类)”无关访问给定类的(对象的)成员“

在您的例子中,构造函数能够直接访问这些变量,因为传递给构造函数的对象的类是相同的。这意味着,访问它的是类本身的代码。基于此,可以使用私有访问。换句话说,它是
Cart
类,从
Cart
类访问私有字段(例如,它会说
this.id

顺便说一句,拥有此权限的不仅仅是构造函数,
Cart
类中的任何代码都可以这样做


查看此文档页上的更多信息:

访问范围与“哪个对象访问哪个其他对象的值”无关,而是与“哪个代码(从哪个类)访问给定类的成员(对象的成员)”有关

在您的例子中,构造函数能够直接访问这些变量,因为传递给构造函数的对象的类是相同的。这意味着,访问它的是类本身的代码。基于此,可以使用私有访问。换句话说,它是
Cart
类,从
Cart
类访问私有字段(例如,它会说
this.id

顺便说一句,拥有此权限的不仅仅是构造函数,
Cart
类中的任何代码都可以这样做


查看此文档页面上的更多信息:

感谢欧内斯特的清晰解释。这个概念现在已经很清楚了:感谢恩斯特的清晰解释。概念现在很清楚了:为什么要使用公共getter方法,或者你可以尝试反射,但不推荐lol这就是为什么要使用公共getter方法,或者你可以尝试反射,但不推荐lol
public class Cart {

    private String id;  
    private List<RentedMovie> rentedMovies = new ArrayList<RentedMovie>();  
    private long totalRent; 
    private long cartItemsCount;

    public Cart(Cart sessionCart) {
        this.id = sessionCart.id;
        this.rentedMovies = sessionCart.rentedMovies;
        this.totalRent = sessionCart.totalRent;
        this.cartItemsCount = sessionCart.cartItemsCount;
    } 
    ..<Getters and setters of all private varibles>..
}