1

I have a class that looks like:

public class MySuperClass
{
  public void PrintValue()
  {
    print("SUPER Class");
  }
}

I then have another class that looks like:

public class MySubClass : MySuperClass
{
  public void PrintSubValue()
  {
    print("SUB Class");
  }
}

Then, I have a situation where I have a third class that looks like:

public class MyOtherClass
{
  public MyOtherClass(MySuperClass someSubClass)
  {
    someSubClass.PrintSubValue();
  }
}

It won't compile... As is to be expected.

Now if I change MyOtherClass to look like:

public class MyOtherClass
{
  public MyOtherClass(MySuperClass someSubClass)
  {
    someSubClass = (MySubClass) someSubClass;
    someSubClass.PrintSubValue();
  }
}

It still won't compile... This I didn't expect.

Why am I unable to cast a Super Class to a Sub Class? And how can I get around this issue?

Heretic Monkey
  • 11,687
  • 7
  • 53
  • 122
Jack_Hu
  • 857
  • 6
  • 17

1 Answers1

4

Why am I unable to cast

You are able to cast, but then you assign it back to MySuperClass someSubClass which implicitly casts it back to MySuperClass.

Use

var castedSomeSubClass = (MySubClass)someSubClass;

or

MySubClass castedSomeSubClass = (MySubClass)someSubClass;
GSerg
  • 76,472
  • 17
  • 159
  • 346