Выполнить его здесь: http://rextester.com/ZMLMB2576интерфейс свойство Отсносящийся в базовый класс
public interface IClass {
int number {get;}
}
public abstract class BaseClass : IClass {
public BaseClass(int n){
number = n+100;
}
public int number { get;set;}
}
public class DerivedClass : BaseClass {
public DerivedClass(int n) : base(n) {
number = n;
}
public int number { get;set;}
}
public class Program
{
public static void Main(string[] args)
{
var foobar = new DerivedClass(1);
Console.WriteLine(GetNumber(foobar)); // 101
}
public static int GetNumber(IClass foo){
return foo.number;
}
}
Почему функция GetNumber
не использовать наиболее производный класс, а вместо этого только обрабатывает переданный объект как BaseClass?
Если он был обработка переданного объекта (Foo) как DerivedClass то я подозреваю, базовый конструктор для запуска первого и затем DerivedClass конструктора, перекрывая 101 с 1
Сделать это '' virtual' и override' его. – smoksnes