2015-03-03 3 views
0

У меня есть подкласс Host, который расширяет суперкласс UserПолиморфизм и динамическое связывание в Java

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, который создается за счет динамического связывания не может получить доступ к методу test() внутри класса Host

Что я здесь отсутствует?

ответ

0

Если это объявлено как User, вы можете использовать только методы User - даже если это действительно тип Host.

Смежные вопросы