C # interfaces in a statement subclass difference
There are the following three categories:
public class BaseClass:ICloneable
{
public void Clone()
{
System.Diagnostics.Debug.WriteLine("base");
}
}
public class Derived1Class : BaseClass
{
public new void Clone()
{
System.Diagnostics.Debug.WriteLine("Derived1");
}
}
public class Derived2Class :BaseClass,ICloneable
{
public new void Clone()
{
System.Diagnostics.Debug.WriteLine("Derived2");
}
}
In a different way calling call Clone
:
BaseClass bc0 = new BaseClass();
bc0.pr();
BaseClass bc1 = new Derived1Class();
bc1.pr();
BaseClass bc2 = new Derived2Class();
bc2.pr();
Derived1Class dc1 = new Derived1Class();
dc1.pr();
Derived2Class dc2 = new Derived2Class();
dc2.pr();
f f1 = new BaseClass();
f1.pr();
f f2 = new Derived1Class();
f2.pr();
f f3 = new Derived2Class();
f3.pr();
Output:
base
base
base
Derived1
Derived2
base
base
Derived2
Visible, call through a base class variable Clone
, regardless of whether the base class is a subclass of points, must call the base class Clone
;
invoked through variable subclasses Clone
, subclasses must override the call Clone
;
when invoked by the interface, if the sub-transmission to the interface variables examples of the class not explicitly implement the interface, the interface will be called the parent class variable Clone
.