C # interfaces in a statement subclass difference

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.

Guess you like

Origin www.cnblogs.com/shadowfish/p/11951238.html