请帮助我理解以下几点:
public sealed class SqlConnection : DbConnection, ICloneable {...}在上述课程中,我有两个疑问。
请帮助我理解这一点
发布于 2014-05-24 10:34:34
DBConnection是一个类,IClonable是一个interfaceExplicit Interface,这意味着您不能直接从类实例访问它,但必须显式转换为接口类型。示例
interface IDimensions
{
float Length();
float Width();
}
class Box : IDimensions
{
float lengthInches;
float widthInches;
public Box(float length, float width)
{
lengthInches = length;
widthInches = width;
}
// Explicit interface member implementation:
float IDimensions.Length()
{
return lengthInches;
}
// Explicit interface member implementation:
float IDimensions.Width()
{
return widthInches;
}
public static void Main()
{
// Declare a class instance "myBox":
Box myBox = new Box(30.0f, 20.0f);
// Declare an interface instance "myDimensions":
IDimensions myDimensions = (IDimensions) myBox;
// Print out the dimensions of the box:
/* The following commented lines would produce compilation
errors because they try to access an explicitly implemented
interface member from a class instance: */
//System.Console.WriteLine("Length: {0}", myBox.Length());
//System.Console.WriteLine("Width: {0}", myBox.Width());
/* Print out the dimensions of the box by calling the methods
from an instance of the interface: */
System.Console.WriteLine("Length: {0}", myDimensions.Length());
System.Console.WriteLine("Width: {0}", myDimensions.Width());
}
}发布于 2014-05-24 10:34:52
这不是多重继承。正如您正确地注意到的,DbConnection是一个类,而ICloneable是一个接口。只有一个基类DbConnection,所以这是单个继承。
至于Clone()方法,SqlConnection确实实现了它,但是使用了显式接口实现。这将隐藏Clone()方法,直到将SqlConnection对象视为ICloneable为止。当类的作者决定类应该实现一个接口时,类可以这样做,但是这个接口提供的方法通常没有意义调用这个特定的类。
https://stackoverflow.com/questions/23843786
复制相似问题