这个问题在这里已经有答案了:
为什么java和c在面向对象方面不同(2个答案)
7年前关门了。
我有两个类a和b,其中b是从a派生的。
两个类都有一个具有相同签名的方法。它们在java&c中以以下方式调用#-->
如果是java:
class A
{
public void print()
{
System.out.println("Inside Parent");
}
}
class B extends A
{
public void print()
{
System.out.println("Inside Child");
}
}
class test4
{
public static void main(String args[])
{
B b1=new B();
b1.print();
A a1=new B();
a1.print();
}
}
此程序生成以下内容output:-
Inside Child
Inside Child
如果是c#:
class A
{
public void print()
{
System.Console.WriteLine("Inside Parent");
}
}
class B : A
{
public void print()
{
System.Console.WriteLine("Inside Child");
}
}
class Program
{
public static void Main(string[] args)
{
B b1=new B();
b1.print();
A a1=new B();
a1.print();
System.Console.Read();
}
}
此程序生成以下内容output:-
Inside Child
Inside Parent
3条答案
按热度按时间2o7dmzc51#
如果是c#,则需要将父方法设置为虚拟方法,将子方法设置为重写
hc2pp10m2#
在java中,方法是
virtual
默认情况下。在c#中,方法不是
virtual
默认情况下。因此,为了使c代码的行为与java代码的行为相同,请使用
virtual
在基类和override
在派生类中。或者,为了使java代码的行为与c代码相同,使方法
final
在基类中。ev7lccsx3#
这条线:
我想在这里,在c#你有一个方法隐藏的例子。可能需要显式地将方法声明为重写(例如在java中使用@override注解)。