2015-05-28 5 views
0

Мне нужно понять, почему мы не можем вызвать конструктор базового класса из производного. У меня есть сценарий.Почему мы не можем вызвать конструктор базового класса из производного

public class clsA 
    { 
     int i = 10; 
     public void CallA() 
     { 
      Console.WriteLine("Called by Class A"); 
     } 
    } 

    public class clsB : clsA 
    { 
     int i = 20; 
     public void CallB() 
     { 
      Console.WriteLine("Called by Class B"); 
     } 

    } 

, если я действительно нравится этот

clsA _obja = new clsA(); 

то конструктор базового класса, и мы получим его методы.

, если я действительно нравится, что

clsB _objb = new clsB(); 

затем также конструктор базового класса, и мы получаем методы базового класса и производные методы класса, а также.

, если я действительно нравится этот

clsA _objab = new clsB(); 

то конструктор базового класса, и мы получим его методы.

Но теперь мой вопрос заключается в том, что почему мы не можем вызывать конструктор базового класса из производного класса, как

clsB _objb = new clsA(); 

Пожалуйста, предложите мне. Я хочу простой ответ.

+1

Много ответов относительно того, почему ссылка на производный класс не может ссылаться на объект базового класса: (http://stackoverflow.com/questions/729527/is-it-possible-to-assign-a-base-class -объект-на-производный-класс-reference-with-a), хотя формулировка немного отличается. –

ответ

3

Это не имеет никакого отношения к вызовам конструктора. Проблема в том, что вы не можете назначить экземпляр родительского класса переменной дочернего класса. A clsB экземпляр clsA, но объект clsA необязательно является clsB.

Смежные вопросы