Java中的多态性问题

时间:2015-09-20 02:16:04

标签: java oop polymorphism

public class a{
  public void sup()
  {
    System.out.println("1");
  }
 public class b extends a
{
  public void sub
 {
      System.out.println("2");
 }

当我实例化这样的对象并运行它时:

a ob1 = new b();
ob1.sub();

会出现编译错误,指出ob1中的sub()方法未定义。如果我想实例化类“a”的对象,它仍然可以使用类b中的方法。这样做的适当方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您有声明A ob1 = ...,则只能使用班级A的方法和字段。这是因为ob1被声明为A类型的引用。此检查在编译时完成,实际运行时类型ob1无关紧要。

如果知道 ob1实际引用类型为B的对象(就像在这种情况下那样),并且您希望将其声明为{{1但是将其用作A,您可以将其转换为B

B