Я видел многочисленные сообщения о перегрузке метода, изменяя его тип возвращаемого значения, но в идеале, следующая программа должна идеально работать, потому что переменная i
типа integer может хранить только целые значения.Почему этот метод перегружает аномалию?
Таким образом, в идеале должен вызвать функцию функции int print(int a)
и даже не смотреть на функции float print(int a)
, потому что она возвращает значение с плавающей точкой, и в main()
, я использовал целочисленную переменную для хранения значения, возвращаемого методом, и целая переменная не может иметь значение с плавающей точкой ..
следующий код демонстрирует это →
class temp
{
public float print(int a)
{
int l=12.55;
return l;
}
public int print(int a)
{
int p=5;
return p;
}
}
class Program
{
static void Main(string[] args)
{
temp t=new temp();
int i=t.print(10);
A.Read();
}
}
В другом сценарии, где я сделать что-то вроде этого →
class temp
{
public float print(int a)
{
int l=12.55;
return l;
}
public int print(int a)
{
int p=5;
return p;
}
}
class Program
{
static void Main(string[] args)
{
temp t=new temp();
float f=t.print(10);
A.Read();
}
}
Здесь я принимаю, что компилятор должен генерировать ошибку, потому что он падает в дилемме ли назвать public int(int a)
или public float(int a)
, а так как переменные типа поплавка может одновременно удерживая целое и поплавок значение ..
Пожалуйста, не смешивайте C# и Java, как будто они имеют одинаковое поведение в этом случае. –
@Luiggi: позволяет ли Java перегрузки различаться только по типу возврата? – Vlad
Java не позволяет, что вы просите. Чтобы заставить его работать на Java, вы должны хотя бы изменить один из параметров. –