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>..
}
我对java中的构造函数概念有点困惑。在上面的示例代码中,我已经声明了一个Cart构造函数,它将参数作为Cart(可以引用另一个Cart对象)。正如我们在示例类中看到的,所有实例变量都是私有的,如何才能通过引用sessionCart直接访问Cart类的私有变量。理想情况下,我不应该。
请帮忙。
答案 0 :(得分:2)
private
访问修饰符允许访问包含private
成员的同一个类中的任何代码,无论访问权限是当前实例的成员还是其他实例。
这允许compareTo
和clone
等方法以及复制构造函数访问同一类的不同实例的private
个字段。
答案 1 :(得分:2)
访问范围与“哪个对象访问其他对象的值”无关,而与“哪个代码(从哪个类)访问给定类的成员(对象)”无关“
在您的情况下,构造函数能够直接访问这些变量,因为传递给构造函数的对象的类是相同的。这意味着,它是来自类本身的代码访问它。基于此,可以使用私人访问。换句话说,Cart
类可以访问Cart
类中的私有字段(例如,与this.id
相同的方式)。
顺便说一下,不仅仅是具有此权限的构造函数,Cart
类中的任何代码都可以执行相同的操作。
查看此文档页面上的更多信息:https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html