2013-05-24 3 views
1

C# 추상 클래스를 동일한 캡슐화 및 기능을 가진 Java 클래스로 변환하려고합니다. 수정자를 사용하지 않고 클래스를 선언하여 클래스를 Java에서 내부 클래스로 만들면 개인 패키지가 생성된다는 것을 알고 있습니다. 나는 클래스가 public 인 곳을 제외하고 비슷한 것을 얻고 싶다. 클래스 내의 메소드 중 일부는 public이고 일부는 내부적이다.내부 메서드가있는 Java 공용 클래스

다음과 같이 내가 외모를 수정하고 클래스,

//// This is C# 
public abstract class Response 
{ 
    public String Request{get; internal set;} 

    public String Body{get; internal set;} 

} 
내가 이상적으로 다음과 같습니다 뭔가 끝내고 싶습니다

,

//// This is Java 
public abstract class Response 
{ 
    public abstract String getRequest(){} 

    abstract String setRequest(String r){} 

    public abstract String getBody(){} 

    abstract String setBody(String b){} 
} 

이 달성 할 수 있습니까?

+0

* 수정자를 사용하지 않고 클래스를 선언하여 Java에서 내부 클래스를 만들 수 있다는 사실을 알고 있으며 개인 패키지 *가 사실이 아닙니다. 액세스 수준 한정자를 설정하지 않으면 기본 액세스 권한이 있거나 동일한 패키지의 모든 클래스가이 필드/메소드에 액세스 할 수 있음을 의미합니다. –

+0

또한 수정 자 (기본 액세스)를 사용하지 않고 선언하면 다른 패키지의 파생 클래스가 이러한 추상 작업에 액세스 할 수 없으므로 (따라서 무시할 수 있음) 바람직하지 않을 수 있습니다. – cmbaxter

+0

다른 SO 질문에 대한 답변은 도움이 될 수 있습니다. http://stackoverflow.com/a/215505/3340 –

답변

1

는 추상 클래스

public abstract class Response 
{ 
    public abstract String getRequest(); 

    abstract String setRequest(String r); 

    public abstract String getBody(); 

    abstract String setBody(String b); 
} 

또 하나의 시체가 없어야합니다. 수정자를 사용하지 않으면 비공개가 아닙니다. 패키지로 보호됩니다. 이는 동일한 패키지 내의 다른 클래스에서 액세스 할 수 있음을 의미합니다.

+1

다음은 액세스 가능성 측면에서 각 수정 자 (또는 수정 자 없음)의 역할을 보여주는 멋진 테이블입니다. http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html – Flipbed

+0

답변을 읽은 후에 차이점을 더 잘 이해하고 있다고 생각합니다. 다른 패키지의 클래스는이 클래스를 확장 할 것이므로 최상의 경로는 보호 된 수정자인 것처럼 보입니다. – JME

관련 문제