2014-10-16 8 views
0

У меня есть следующий код, в котором у базового класса Employee есть статический метод meth1(), который я могу вызвать из объекта дочернего класса (Pro). Это случай скрытия метода или что? , я не уверен, потому что я не реализовал метод meth1() в классе Pro, но все же смог вызвать статический метод Emplyee из объекта Pro.Это случай скрытия метода?

class Employee 
{ 

    String s; 

    public String getS() { 
     return s; 
    } 

    public void setS(String s) { 
     this.s = s; 
    } 
    protected static void meth1() 
    { 
     System.out.println("inside emp-meth1"); 
    } 

} 
public class Pro extends Employee { 
/* 
* public void meth1() 
    { 
     System.out.println("inside encapsulation-meth1"); 
    } 
    */ 
    public static void main(String as[]) 
    { 
     Pro e = new Pro(); 
    // e.s ="jay"; 
     e.meth1(); 

    } 

} 

Выходные:

inside emp-meth1 

Благодаря

Джаендра

+0

Что вы думаете, что вы скрыли? –

+1

У вас есть meth1() в Pro, прокомментированном. – brso05

+0

Я не совсем уверен, что вы спрашиваете? – brso05

ответ

1

Что вы пытаетесь скрыть? Попробуйте использовать нижеследующий код

emp.meth1() будет вызывать метод на основе ссылки не на основе передаваемого объекта.

class Employee 
{ 

    String s; 

public String getS() { 
    return s; 
} 

public void setS(String s) { 
    this.s = s; 
} 
protected static void meth1() 
{ 
    System.out.println("inside emp-meth1"); 
    } 

} 
public class Pro extends Employee { 
    protected static void meth1() 
    { 
    System.out.println("inside encapsulation-meth1"); 
    } 

public static void main(String as[]) 
{ 
    Pro e = new Pro(); 
    Employee emp = new Pro(); 
    emp.meth1();  //this is case of method hiding 
    e.meth1(); 

} 

}

+0

вот что спрашивает, почему работает вышеприведенный код (тот, что наверху). Статический метод не наследуется подклассом тогда, как он может вызвать meth1() в родительском классе? –