2011-04-19 10 views
3

Possible Duplicate:
How to make an outer class inherited from an inner class내부 클래스에서 상속하는 방법?

알고 싶습니다. 다른 클래스 내부 클래스의 일부 클래스를 상속 할 수 있습니까?
코드 아래에서 실행하고 싶지만 오류가 발생합니다.

public class Computer { 

    int model; 

    Computer(int i) { 
     model = i; 
    } 

    public class HardDrive {  
     int size; 

     public HardDrive(int i) { 
      size = i; 
     } 

     public HardDrive() { 
      size = 40; 
     } 
    } 
} 

그리고 메인은 다음과 같습니다

no enclosing instance of type inner.inherit.Computer is in scope

+0

새로운 질문을하기 전에 검색을 이용하십시오. 5 월 질문은 이미 SO에서 물었고 귀하는 즉시 귀하의 답을 찾을 수 있습니다. –

+0

@brian 나는 묻기 전에 수색을했지만, 나는 그것을 찾을 수 없다. 왜 나는 이것을 찾을 수 없는지, 너의 도움을위한 황색을 모르겠다. – Am1rr3zA

답변

0

나 (See)을 위해 잘 작동하는 것 같다 :

class SCSI extends Computer.HardDrive { 

    SCSI(Computer c) { 
     c.super(80); 
    } 
} 

나는이 오류가 발생합니다. 확인 SCSI는 컴퓨터와 같은 네임 스페이스에 있는지 확인하거나 다른 SCSIComputer 다른 내부 클래스가 아닌 경우

class SCSI extends <namespace>.Computer.HardDrive { 
+1

좀 더 설명해 주시겠습니까? 네임 스페이스가 의미하는 바를 얻지 못하겠습니까? ( – Am1rr3zA

+0

@ Am1rr3za Java 패키지는 미안 해요 –

+0

예. 그들은 같은 패키지에 있습니다. "c.super (80);에 오류가 있습니다." – Am1rr3zA

0

를 사용하여, 당신은 HardDrive 정적해야한다.

+0

HardDrive Static으로 내 문제가 해결되지 않았습니다. – Am1rr3zA

0

HardDrive를 내부 정적 클래스로 만들면 작동한다고 생각합니다. 그 이유는 "보통"내부 클래스가 주변 클래스의 인스턴스와 관련이 있기 때문입니다 (예 : Computer.thisHardDrive에 작성하여 컴퓨터의 "this"에 액세스 할 수 있음). 따라서 컴파일러에서 Computer 인스턴스가 있어야합니다. 범위. HardDrive를 정적으로 만들면 내부 클래스와 외부 클래스의 인스턴스간에 이러한 연결이 존재하지 않으므로 제한없이 상속받을 수 있습니다.

관련 문제