2010-08-11 5 views
3

프로그래밍 언어에서 액세스 수정자를 사용해야 할 필요가 있습니까? 모든 멤버와 메서드를 비공개로 선택하면 출력은 어떻게됩니까? 물론액세스 수정 자의 사용은 무엇입니까

당신이 비공개로 모든 회원들과 방법을 선언 할 수 있습니다 Encapsulation (위키 백과),하지만 당신은 다른 클래스에서 그들에 액세스 할 수 없기 때문에 당신은, 자신에게 거의 쓸모없는 클래스를 가지고 :

답변

4

개인은 구현을 숨기기 위해 캡슐화 (OOP)에 사용됩니다. public 선언 된 메서드는 클래스의 인터페이스를 제공합니다.

모든 것을 비공개로 선언하면 다른 클래스의 메서드를 사용할 수 없습니다. 그런 클래스는 매우 쓸모가 없습니다.

2

메서드/멤버의 액세스 가능성을 제어하려면 액세스 한정자가 필요합니다. 도덕적 인면에서 가능한 한 개인에게 접근성을 제한해야하지만 여전히 모든 것을 비공개로 설정할 수는 없습니다.

모든 클래스 (예 : 로깅)에 대해 유용한 작업을 수행하는 유틸리티 클래스가 있다고 가정 해보십시오. 이 경우 모든 클래스는 유틸리티 클래스와 그 멤버를 "보아야"합니다. 사실 모든 것을 여기에서 비공개로 설정할 수는 없습니다. 그것은 수백 중 하나의 예일뿐입니다.

2

액세스 수정자는 필드와 메서드의 가시성을 제어하는 ​​데 사용됩니다. 종종 우리는 다른 클래스의 객체에 대한 메소드 나 필드의 사용을 허용하지 않는 좋은 이유가 있습니다. 그냥 자바로 코딩을 시작하고 하나 개의 클래스에있는 모든 자신의 코드를 유지하는 경우

, 당신은 결국 (public 될 수있다 주요 방법을 제외하고) 다른 액세스 수정이 필요하지 않을 수 있습니다. 접근 수정자는 일단 디자인이 객체 지향이되면 (= 일단 하나 이상의 클래스를 구현하면) 중요해진다.

Here is a pointer to the corresponding articel in the official Java tutorial.

2

액세스 수정 캡슐화에 사용되는 : 구현을 숨기고 그들이, 당신은 패키지와 클래스의 코드를 배치 할 수 있도록하고, 외부에 표시 만 "공식적인"공용 인터페이스를 가지고 세부 사항 (당신이하고 싶은, 당신이 나중에 누구에게도 말하지 않고 그것을 바꿀 수 있도록).

다른 프로그래머가 사용할 라이브러리로 코드를 릴리스 할 때 특히 중요합니다 (?). 코드가 사용자의 프로그램에서만 사용되는 경우에도 더 큰 프로그램을 여러 패키지로 구성하는 데 도움이됩니다.

프로그램을 하나의 클래스로만 구성하지 않으면 모든 것을 비공개로 만드는 것이 바람직하지 않습니다. 그러나 이것은 합리적인 기본값입니다. 다른 클래스가 호출해야한다고 생각할 때까지 메서드를 private으로 설정하십시오.

Java의 기본 수정 자 (지정되지 않은 경우)는 패키지로 보호됩니다.이렇게하면 메소드 또는 필드가 다른 사용자로부터 숨어있는 동안 관련 코드 (예 : 동일한 패키지의 코드)에서 액세스 할 수 있습니다. 또한 합리적인 기본값 또는 개인으로부터의 자연스러운 업그레이드 경로입니다. 패키지 외부의 코드가이를 호출해야 할 때까지 package-protected 메소드를 만듭니다.

가시적 인 수준은 보호되며 (하위 클래스는 그것을 볼 수 있음) 공개 (누구나 볼 수 있음). 공공 또는 보호 대상을 만들기 전에 인터페이스를 신중하게 생각해보십시오. 인터페이스를 나중에 변경하기가 어려워지기 때문입니다.

2

동의합니다. 회원 필드의 경우에는 private이 가장 좋습니다. 그러나 private 수정자는 서브 클래스가 필드와 메소드에 액세스하는 것을 금지합니다. 모든 메소드와 필드가 private 인 경우, 서브 클래스는 해당 유형을 제외한 상위 클래스와 공통된 것이 없습니다.

모든 방법을 사용할 수없는 경우 한 개체가 다른 개체에 유용하기 어렵습니다. 모두 메서드 (생성자 포함)가 비공개 인 경우 Object을 인스턴스화하는 것조차 작성하기가 어려울 수 있습니다.

더 나은 질문은 privatepublic 외부에서 protecteddefault 액세스 수정자가있는 이유는 무엇입니까?

+0

개인 및 공개 만있는 경우 코드를 패키지로 구성 할 수 없습니다. 기본 수정자는 패키지 외부에서 액세스를 숨 깁니다. 우리가 "보호받는"것이 필요한지에 관해서는 기꺼이 토론 할 것입니다. 서브 클래 싱을 많이 사용하면 꽤 멋지다. – Thilo

+0

'그러나 Java에서는 개인이 하위 클래스의 필드 및 메서드에 대한 액세스 가능성을 제한합니다.' 나는 당신이 그 진술을 다시 말해 줄 것을 권하고, 진술 된 것처럼 혼란 스럽다. – EJP

1

클래스를 패키지에서 사용할 수 있도록 기본 액세스를 사용할 수 있습니다. 아무도 사용할 수 없도록 private합니다.

0

물론 액세스 수정자가 필요합니다. 그렇지 않으면 액세스 수정자가 추가되지 않습니다.

객체 지향 프로그래밍 및 코드 재사용의 가장 중요한 기능 중 하나입니다. 모든 것을 비공개로 만들면이 작업을 수행 할 수 없으며 코드를 반복 작성해야합니다! 공개 또는 기본 액세스 한정자를 사용하면 다른 클래스의 코드를 사용할 수 있습니다.

0

클래스, 생성자, 메소드 및 필드에 대한 액세스는 액세스 수정자를 사용하여 제어됩니다. 즉, 클래스는 다른 클래스에서 액세스 할 수있는 정보 또는 데이터를 제어 할 수 있습니다. 액세스 한정자의 주된 기여는 OOP 개념 중 하나 인 캡슐화를위한 것입니다.

모든 멤버와 메서드를 비공개로 설정하면 코드가 다른 클래스에 액세스 할 수 없게됩니다. 일반적으로 이미 사용할 수있는 기능과 코드를 재사용 할 수 없게됩니다.

0

개인 한정자는 멤버가 자체 클래스에서만 액세스 할 수 있도록 지정합니다. 패키지 내의 기본 수정 자 사용. protected 한정자는 멤버가 패키지 내에서 액세스 할 수 있으며 모든 수준에서 을 상속 받음을 지정합니다.

0

모든 메소드와 필드는 클래스 내에서만 액세스되며, 클래스의 객체를 사용하여 상속하거나 액세스하더라도 외부 클래스에는 액세스하지 않습니다.

넷 개 액세스 지정,

Public 
Private 
Protected 
Default 

자바 데 5 비 액세스 한정자를 포함하는 자바

static 
final 
abstract 
syncronised 
volatile 

출처 : Tutorial Data - Java Modifier

1

그것은 당신의 클래스 메소드 또는 내가 그린 재산의 접근성에 대해 전부 이해하기 쉽게하기위한 표.