在c#中实现了具有相同名称和不同返回类型的方法,但在java

时间:2016-10-19 11:04:42

标签: java c#

我是JAVA环境的新手,在尝试实现同名和不同返回类型的方法时遇到问题。在C#中,我使用方法隐藏概念来实现这一点。有没有更好的方法在JAVA中实现相同的方法。请查找代码段以供参考。请告诉我

C#:

class Shape
{
public int Width { get; set; }
public int Height { get; set; }

public void Print()
{
Console.WriteLine("Base class is called");
}
}


class Table: Shape
{
public int m_tableHeight;
public int m_tableWidth;
public string m_modle;

public Table(int tableWidth, int tableHeight,string modle)
{
m_tableHeight = tableHeight;
m_tableWidth = tableWidth;
m_modle = modle;
}

public new string Print()
{
return m_modle;
}
}

JAVA:

public class Shape
{
public int getWidth()throws Exception{
return getWidth();
}
public void setWidth(int value)throws Exception{
setWidth(value);
}
public int getHeight()throws Exception{
return getHeight();
}
public void setHeight(int value)throws Exception{
setHeight(value);
}
public void Print()throws Exception{
System.out.println("Base class is called");
}
}

public class Table
 extends Shape
{
public  int m_tableHeight;
public  int m_tableWidth;
public  String m_modle;
public Table(int tableWidth,int tableHeight,String modle)throws Exception{
m_tableHeight=tableHeight;
m_tableWidth=tableWidth;
m_modle=modle;
}
//Throws error as return type is incompatible with shape.print()
public String Print()throws Exception{
return m_modle;
}
}

1 个答案:

答案 0 :(得分:0)

在Java中,方法由方法描述符标识:方法描述符由类和方法名称以及方法参数的类型组成,但返回类型不是方法描述符的一部分!

因此在Java中,一个类中不能有两个具有相同名称,相同参数(但返回类型不同)的方法。 (当然on方法可以覆盖其他方法并缩小*返回类型,但这样可以覆盖不重载)

(*你只能缩小它们(覆盖一个返回Number的方法,返回Double的方法),但你不能改变它们,你不能覆盖一个返回void的方法,返回其他东西的方法)