展开全部
首先,private User user;是定义一个类的私有的User字段,private修饰符表示只能在类62616964757a686964616fe59b9ee7ad9431333337393564内访问user字段,一般指供类中的方法使用。如果要在其他类中使用,必须提供相应的接口才能访问。
而User user = new User();是实例化一个User对象,它可能存在方法中,表示实例化一个User对象。也可能是在定义类字段的时候,如果实在定义类的字段那么他的修饰符默认的是包级别的。就是说可以在同一个包中直接访问user对象,而不必通过接口。下面是一个简单的例子演示一下这两个之间的区别。public class ModifiedTest
{
public static void main(String[] args)
{
UserTest1 t1 = new UserTest1();
t1.getUser().sayHi();
UserTest2 t2 = new UserTest2();
t2.user.sayHi();
}
}
class UserTest1
{
private User user = new User();
public User getUser()
{
return user;
}
}
class UserTest2
{
User user = new User();
}
class User
{
public void sayHi()
{
System.out.println("hi");
}
}
在UserTest1类中user是private修饰的,所以在ModifiedTest类中必须通过UserTest1提供的getUser()接口访问间接user对象,而在UserTest2中采用的是默认的修饰符(包级修饰符,也就是不加private,public,protected修饰。User user = new User();),所以在ModifiedTest中可以通过实例对象直接访问user对象t2.user。(ModifiedTest和UserTest2在同一个包中)