2017-04-21 4 views
0
public class vehicles 
{ 
    public string name = "genreal"; 
    public string category = "general"; 
    public virtual void type() 
    { 
     Console.WriteLine(" my name is " + name + " my category is " + category + " I am from Vehicles class"); 
    } 
} 

public class bike : vehicles 
{ 
    public override void type() 
    { 
     name = "Honda"; 
     category = "Bike"; 
     Console.WriteLine("my name is " + name + " my category is " + category + " I am from Bike class"); 
    } 
} 

public class Car : vehicles 
{ 
    public override void type() 
    { 
     name = "Suzuki"; 
     category = "Car"; 
     Console.WriteLine(" my name is " + name + " my category is " + category + " I am from car class"); 
    } 
} 

これは互いに継承されたクラスです。これは派生クラスメソッドを呼び出そうとしています。私たちは皆、ポリモーピズムは、実行時にベースクラスrefrence変数を使って派生クラスメソッドを呼び出すことができることを知っています。しかし、私はここに少し変更をやっている私は、これは例外Unable to cast object of type 'polymorphism.vehicles' to type 'polymorphism.Car' を与えているタイプ 'polymorphism.vehicles'のオブジェクトを 'polymorphism.Car'にキャストすることができません

vehicles V = new vehicles(); 
((Car)V).type(); 
Console.ReadLine(); 

をキャストすることによって、親クラスのrefrence変数と親クラスのオブジェクトを使用して、それを起動しています、我々はCLASは、子クラスに反対する親をキャストカントので、それであります?私はあなたが私を案内してくれるかわからない

+0

修正。親クラスを子クラスにキャストすることはできません(ただし、具体クラスが実際に派生型である場合を除く) – john

答えて

0

親クラスから子クラスをキャストすることはできません。 あなたは父のプロパティと子のものにアクセスすることができますあなたはCarとしてあなたのVARを作成する必要があり、そこから、あなたはそこからCar方法

Car c = new Car(); 
c.type(); 

にアクセスすることができます。

関連する問題