Java中的多态性和动态绑定



我有扩展超类User 的子类Host

public abstract class User
{
    public String user_name;
    public String toString()
    {
        return this.getClass() + " Name: " + this.user_name;
    }
}
class Host extends User
{
    public Host(String user_name)
    {
        this.user_name=user_name;
    }
    public void test()
    {
        System.out.println(user_name + " pass");
    }
}

内部Main()。。

    User _host1 = new Host("h1");
    Host _host2 = new Host("h2");
    System.out.println(_host1);  //class Host Name: h1
    System.out.println(_host2);  //class Host Name: h2
    _host1.test();   //this gives me an error
    _host2.test();   //this is fine

我确信_host1_host2都属于Host类。

我不明白的是,为什么通过动态绑定创建的_host1不能访问类Host 中的方法test()

我在这里错过了什么?

如果它被声明为User,那么您只能对它使用User方法,即使它实际上是Host类型。

相关内容

  • 没有找到相关文章

最新更新