public static void Test() { Sub f = new Sub(); (f as Interface).m_tText = "a"; //(f as Class).m_tText = "b"; //f.m_tText = "c"; Console.WriteLine((f as Class).m_tText); Console.WriteLine((f as Interface).m_tText); Console.WriteLine(f.m_tText); } public interface Interface { string m_tText { get; set; } }public abstract class Class { public virtual string m_tText { get; set; } } public class Sub : Class, Interface { private string value; public override string m_tText { get { return value; } set { this.value = value; } } }想想,以上注释掉的2行和没注释的,都是什么效果。
public interface Interface { string m_tText { get; set; } } public abstract class Class { public abstract string m_tText { get; } } public class Sub : Class, Interface { public override string m_tText { get { } set { } } } 这里的Class可不可以不要set,
1.abstract类中必须都同时包含get和set
2.Sub既然要实现Interface,那你就需要按照Interface的提供set和get,缺少了不行。
最好把接口里面的成员变量放在abstract类里,接口放函数。
{
Sub f = new Sub();
(f as Interface).m_tText = "a";
//(f as Class).m_tText = "b";
//f.m_tText = "c";
Console.WriteLine((f as Class).m_tText);
Console.WriteLine((f as Interface).m_tText);
Console.WriteLine(f.m_tText);
}
public interface Interface
{
string m_tText
{
get;
set;
}
}public abstract class Class
{
public virtual string m_tText
{
get;
set;
}
}
public class Sub : Class, Interface
{
private string value;
public override string m_tText
{
get { return value; }
set { this.value = value; }
}
}想想,以上注释掉的2行和没注释的,都是什么效果。
public interface Interface
{
string m_tText
{
get;
set;
}
}
public abstract class Class
{
public abstract string m_tText
{
get;
}
}
public class Sub : Class, Interface
{
public override string m_tText
{
get { }
set { }
}
}
这里的Class可不可以不要set,