Кто-нибудь может объяснить?
Когда мы перегружаем конструктор различными параметрами, один из которых имеет объект типа данных, а другой — строку типа данных, и когда мы создаем объект этого класса с предоставлением входного параметра, равного нулю, он вызывает конструктор со строкой в качестве входного параметра, но не конструктор, имеющий входной параметр в качестве объекта. Поскольку Object является суперклассом String, кто-нибудь может сказать мне, почему он вызывает конструктор со строкой входного параметра?
Class A
{
public A(Object o)
{
System.out.println("Object Drawn");
}
public A (String o)
{
System.out.println("String Drawn");
}
public static void main(String args[])
{
new A(null);
}
}
Выход: — Строка обращается
Он всегда вызывает наиболее конкретный метод сопоставления или конструктор. Если бы не так, вы бы всегда звонили Object
и перегружать это было бы бессмысленно.
Этот подход использует в Java и C ++
Других решений пока нет …