У меня есть этот код:родительский конструктор принимает родительский объект в качестве параметра
public class Parent
{
int num;
Parent p;
Parent()
{
}
Parent(Parent s)
{
p=s;
}
void Print()
{
System.out.println(p.num);
}
}
и:
public class Child
{
public static void main(String args[])
{
Parent p1=new Parent();
Parent p2=new Parent(p1);
Parent p3=new Parent(p2);
p2.num=5;//line 1
p2.Print();//Line 2
}
}
O/р = 0. Это верно, когда я заменяю линии 1 и 2 с p3.num=5
и p3.Print()
соответственно. Но когда я заменяю его p1.num=5
и p1.Print()
, я получаю Runtime error (NullPointerException). Может ли кто-нибудь объяснить это поведение?
Поскольку ваш конструктор по умолчанию ничего не делает полезным для 'Parent p1 = new Parent();'. По крайней мере, инициализируйте ваш 'int num' до 0 или что-то внутри вашего конструктора по умолчанию Parent(). – ha9u63ar