コメント書くところ間違えた
あとインデント見やすく
import std.stdio;
class A{
 void change(ref A a){
  a = new B;
 }
}
class B : A {}
void main(){
 auto x = new A;
 writefln(x); // a.A
 x.change(x);
 writefln(x); // a.B
}