Java で以下のようなことは可能でしょうか。

abstract class A<T extends B> {
  T baz;

  A() {}

  String getFoo() {
    return this.baz.b1;
  }

  class B {
    String b1;
    B() {
      this.b1 = "bar";
    }
  }
}

class A' extends A<B'> {
  A'() {
    this.baz = new B'();
  }

  String getBar() {
    return this.baz.b2;
  }

  class B' extends B {
    String b2;
    B'() {
      super();
      this.b2 = "bar";
    }
  }
}

class Main {
  public static void main(String[] args) {
    A' a = new A'();
    System.out.println(a.getFoo() + a.getBar()); // out "foobar"
  }
}

また、クラス B のメソッドをクラス B' でオーバーライドすることは可能でしょうか。