2013-10-16 3 views
0

나는 자바에서이 구조가있는 경우 :액세스

class A{ 
private string Name; 

public string getName() { 
    return this.Name; 

} 


class B extends A{ 
private string Name; 

public string getName(){ 
    return this.Name; 
} 

} 

나는 B 클래스의 객체를 생성하고 내가 상속 방법 getName()이 객체를 통해 액세스하려는. 어떻게해야합니까? A 메서드에서 getName() 메서드가 B 메서드로 재정의 되었습니까?

답변

2

해당 개체를 통해 상속 된 메서드 getName()에 액세스하려고합니다. 어떻게해야합니까?

B 외부 컨텍스트에서 볼 수 없습니다. 그 슈퍼 타입이 getName() 방법을 선언하는 경우 B 내에서

, 당신은

super.getName(); 

을 할 수 있습니다.

예제에서 A#getName() 메서드는 상속되고 B으로 재정의됩니다.


private 필드는 상속되지 않습니다.

같은 이름의 필드는 상속 된 필드를 숨길 수 있습니다.

class A{ 
protected string Name; 

public string getName() { 
    return this.Name; 
} 
} 


class B extends A{ 
    public B(String Name) { 
     this.Name = Name; 
    } 
} 

그런 다음 당신이 할 수 있습니다 :

0
은 당신의 구조를 변경

B myB = new B(); 
myB.Name = "Susie"; 
System.out.println(myB.getName()); //Prints Susie 

당신은 클래스 AName에 대한 세터를 배치해야합니다. 또한 String은 Java로 대문자로 입력해야합니다.

0

당신은 다음과 같은 방법으로

class B extends A{ 
// no repetition of name 

public String getName(){ 
    //you don't need to access A.name directly just 
    //use you A.getName() since it's your superclass 
    //you use super, this way A.name can be private 
    String localVarName = super.getName(); 

    // do class B changes to Name 

    return localVarName; 
} 

/* 
*rest of B class you may want to add 
*/ 
} 
클래스 B를 정의 할 수 있습니다