access modifiers java tutorial with examples
이 비디오 자습서에서는 Java의 액세스 수정 자에 대해 설명하고 예제를 통해 기본, 공용, 보호 및 개인 액세스 수정자를 사용하는 방법을 설명합니다.
Java에는 클래스와 객체가 있습니다. 이러한 클래스와 개체는 패키지에 포함되어 있습니다. 게다가, 클래스는 중첩 된 클래스, 메소드, 변수 등을 가질 수 있습니다. Java는 객체 지향 프로그래밍 언어이므로 원치 않는 세부 사항을 숨기는 캡슐화를 따라야합니다.
Java는 패키지, 클래스, 생성자, 메소드, 변수 또는 기타 데이터 멤버의 범위 또는 가시성을 제한하는 데 도움이되는 '액세스 수정 자 또는 액세스 지정자'라는 엔티티를 제공합니다. 이러한 액세스 수정자는 '가시성 지정자'.
액세스 지정자를 사용하여 특정 클래스 메서드 또는 변수를 액세스하도록 제한하거나 다른 클래스에서 숨길 수 있습니다.
SQL plsql 인터뷰 질문 및 답변
학습 내용 :
Java의 액세스 수정 자에 대한 비디오 자습서
Java의 액세스 수정 자
또한 액세스 지정자는 클래스 또는 패키지의 다른 데이터 멤버가 액세스 할 수있는 클래스의 데이터 멤버 (메서드 또는 필드)를 결정합니다. 캡슐화 및 재사용 성을 보장하기 위해 이러한 액세스 지정자 / 수정자는 객체 지향 프로그래밍의 필수 부분입니다.
Java의 수정자는 두 가지 유형입니다.
# 1) 액세스 수정 자
Java의 액세스 수정자를 사용하면 필드, 생성자, 클래스 또는 메소드와 같은 데이터 멤버의 범위 또는 액세스 가능성 또는 가시성을 설정할 수 있습니다.
# 2) 비 접근 수정 자
Java는 또한 클래스, 변수, 메소드, 생성자 등과 함께 사용되는 비 접근 지정자를 제공합니다. 비 접근 지정자 / 수정자는 JVM에 대한 엔티티의 동작을 정의합니다.
Java의 일부 비 액세스 지정자 / 수정자는 다음과 같습니다.
- 공전
- 결정적인
- 요약
- 과도 현상
- 휘발성 물질
- 동기화 됨
- 원주민
이전 튜토리얼에서 정적, 동기화 및 휘발성 키워드를 다뤘습니다. 이 튜토리얼의 범위를 벗어나는 다른 비 액세스 수정 자에 대해서는 향후 튜토리얼에서 다룰 것입니다.
Java의 액세스 수정 자 유형
Java는 클래스 및 기타 엔티티와 함께 사용할 수있는 네 가지 유형의 액세스 지정자를 제공합니다.
이것들은:
# 1) 기본값 : 특정 액세스 수준이 지정되지 않을 때마다 '기본값'으로 간주됩니다. 기본 수준의 범위는 패키지 내에 있습니다.
# 2) 공개 : 이것은 가장 일반적인 액세스 수준이며 공용 액세스 지정자가 엔터티와 함께 사용될 때마다 해당 특정 엔터티는 클래스 내부 또는 외부, 패키지 내부 또는 외부 등에서 액세스 할 수 있습니다.
# 3) 보호 : 보호 된 액세스 수준에는 패키지 내에있는 범위가 있습니다. 보호 된 엔터티는 상속 된 클래스 또는 자식 클래스를 통해 패키지 외부에서도 액세스 할 수 있습니다.
# 4) 비공개 : 엔티티가 비공개 인 경우이 엔티티는 클래스 외부에서 액세스 할 수 없습니다. 개인 엔터티는 클래스 내에서만 액세스 할 수 있습니다.
다음 표에 액세스 수정자를 요약 할 수 있습니다.
액세스 지정자 | 인사이드 클래스 | 내부 패키지 | 외부 패키지 하위 클래스 | 외부 패키지 |
---|---|---|---|---|
은밀한 | 예 | 하지 마라 | 하지 마라 | 하지 마라 |
기본 | 예 | 예 | 하지 마라 | 하지 마라 |
보호 | 예 | 예 | 예 | 하지 마라 |
공공의 | 예 | 예 | 예 | 예 |
다음으로 이러한 액세스 지정자 각각에 대해 자세히 설명합니다.
기본 액세스 지정자
Java의 기본 액세스 수정 자에는 특정 키워드가 없습니다. 액세스 수정자가 지정되지 않을 때마다 기본값으로 간주됩니다. 클래스, 메서드 및 변수와 같은 엔터티는 기본 액세스 권한을 가질 수 있습니다.
기본 클래스는 패키지 내부에서 액세스 할 수 있지만 패키지 외부에서는 액세스 할 수 없습니다. 즉, 기본 클래스가 정의 된 패키지 내부의 모든 클래스가이 클래스에 액세스 할 수 있습니다.
마찬가지로 기본 메서드 또는 변수는 패키지 외부가 아닌 정의 된 패키지 내부에서도 액세스 할 수 있습니다.
아래 프로그램은 Java의 기본 액세스 수정자를 보여줍니다.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
산출:
위의 프로그램에는 액세스 수정자가없는 클래스와 메서드가 있습니다. 따라서 클래스 및 메서드 디스플레이 모두 기본 액세스 권한이 있습니다. 그런 다음 메서드에서 클래스의 객체를 직접 만들고 메서드를 호출 할 수 있음을 확인합니다.
공개 액세스 수정 자
Java 프로그램의 모든 클래스 또는 패키지에서 '공용'으로 지정된 클래스, 메소드 또는 데이터 필드에 액세스 할 수 있습니다. 공용 엔터티는 패키지 내부와 패키지 외부에서 액세스 할 수 있습니다. 일반적으로 공용 액세스 수정자는 엔티티를 전혀 제한하지 않는 수정 자입니다.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
산출:
보호 액세스 지정자
보호 된 액세스 지정자는 엔티티가 선언 된 클래스의 서브 클래스를 통해 엔티티에 대한 액세스를 허용합니다. 클래스가 동일한 패키지에 있는지 다른 패키지에 있는지는 중요하지 않지만 보호 된 엔티티에 액세스하려는 클래스가이 클래스의 하위 클래스이면 엔티티에 액세스 할 수 있습니다.
클래스와 인터페이스는 보호 할 수 없습니다. 즉, 클래스와 인터페이스에 보호 된 수정자를 적용 할 수 없습니다.
보호 된 액세스 수정자는 일반적으로 상위-하위 관계에서 사용됩니다.
아래 프로그램은 Java에서 보호 액세스 수정 자의 사용법을 보여줍니다.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
산출:
Windows 10에서 jar 파일을 어떻게 실행합니까?
개인 액세스 수정 자
'비공개'액세스 수정자는 접근성 수준이 가장 낮은 수정 자입니다. private으로 선언 된 메서드와 필드는 클래스 외부에서 액세스 할 수 없습니다. 이러한 개인 엔터티를 구성원으로 갖는 클래스 내에서만 액세스 할 수 있습니다.
비공개 엔티티는 클래스의 하위 클래스에도 표시되지 않습니다. 개인 액세스 수정자는 Java에서 캡슐화를 보장합니다.
Private Access Modifier와 관련하여 주목해야 할 몇 가지 사항입니다.
- 클래스 및 인터페이스에는 개인 액세스 수정자를 사용할 수 없습니다.
- 개인 엔티티 (메서드 및 변수)의 범위는 선언 된 클래스로 제한됩니다.
- private 생성자가있는 클래스는 main 메서드와 같은 다른 위치에서 클래스의 개체를 만들 수 없습니다. (개인 생성자에 대한 자세한 내용은 이전 튜토리얼에서 설명했습니다).
아래 Java 프로그램은 Private Access Modifier를 사용합니다.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
산출:
위의 프로그램은 클래스 객체를 사용하여 개인 데이터 멤버에 액세스하려고 할 때 컴파일 오류를 발생시킵니다.
그러나 개인 멤버 변수에 액세스하는 방법이 있습니다. 이 메소드는 Java에서 getter 및 setter를 사용합니다. 그래서 getter가 private 변수의 값을 읽을 수 있도록 private 변수가 선언 된 동일한 클래스에 public get 메소드를 제공합니다.
마찬가지로, 우리는 private 변수의 값을 설정할 수있는 public setter 메서드를 제공합니다.
다음 Java 프로그램은 Java의 개인용 변수에 대한 getter 및 setter 메소드 사용을 보여줍니다.
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
산출:
위의 프로그램에는 전용 문자열 변수가있는 클래스가 있습니다. 개인 변수의 값을 반환하는 공용 getName 멤버 메서드를 제공합니다. 또한 String을 인수로 사용하고이를 private 변수에 할당하는 클래스에 공용 setName 메서드를 제공합니다.
두 메소드 모두 공용이므로 클래스의 객체를 사용하여 쉽게 액세스 할 수 있습니다. 이렇게하면 클래스의 개인 데이터 멤버에 액세스하려고 할 때마다 팝업되는 컴파일 오류를 극복 할 수 있습니다.
자주 묻는 질문
Q # 1) Java에는 몇 개의 Access Modifier가 있습니까?
대답: Java는 기본, 공개, 보호 및 비공개의 네 가지 수정자를 제공합니다.
Q # 2) Java에서 Access Modifiers와 Non-Access Modifiers는 무엇입니까?
대답: 액세스 한정자는 클래스 나 메서드, 변수 또는 생성자와 같은 프로그램 엔터티의 가시성 또는 범위를 정의합니다. 비 접근 수정자는 엔티티의 동작을 정의합니다. 예를 들면 동기화 된 메서드 또는 블록은 다중 스레딩 환경에서 작동 할 수 있음을 나타내고 최종 변수는 상수임을 나타냅니다.
Q # 3) 액세스 지정자가 중요한 이유는 무엇입니까?
대답: 수정자는 다른 클래스 나 메서드 또는 변수에 액세스 할 수있는 클래스를 지정합니다. 액세스 지정자를 사용하여 다양한 클래스, 메소드, 생성자 및 변수에 대한 액세스를 제한하고 Java 엔티티의 캡슐화 및 재사용 성을 보장 할 수 있습니다.
Q # 4) 클래스에 사용되지 않는 수식어는 무엇입니까?
대답: Protected 및 Private 한정자는 클래스에 사용되지 않습니다.
Q # 5) 비 접근 수정 자란 무엇입니까?
대답: 연관된 클래스, 메소드 또는 변수와 같은 엔티티의 동작을 정의하는 수정자는 비 액세스 수정 자입니다. 이름에서 알 수 있듯이 액세스를 지정하지 않습니다. Java는 정적, 최종, 동기화, 휘발성, 추상 등과 같은 다양한 비 액세스 수정자를 제공합니다.
가시성 수정 자에 대한 추가 정보
Java는 변수, 메소드 및 생성자에 액세스하기위한 많은 수정자를 제공합니다.
Java에는 4 가지 유형의 액세스 변수가 있습니다.
- 은밀한
- 공공의
- 기본
- 보호
# 1) 비공개
변수가 private으로 선언되면 클래스 내에서 액세스 할 수 있습니다. 이 변수는 수업 외부에서 사용할 수 없습니다. 따라서 외부 회원은 비공개 회원에 접근 할 수 없습니다.
충격파 플래시 파일을 여는 방법
노트 : 클래스와 인터페이스는 비공개 일 수 없습니다.
# 2) 공개
공개 수정자가있는 메서드 / 변수는 프로젝트의 다른 모든 클래스에서 액세스 할 수 있습니다.
# 3) 보호
변수가 protected로 선언되면 동일한 패키지 클래스 및 다른 패키지의 하위 클래스 내에서 액세스 할 수 있습니다.
노트 : 보호 된 액세스 수정자는 클래스 및 인터페이스에 사용할 수 없습니다.
# 4) 기본 액세스 수정 자
변수 / 메소드가 액세스 수정 자 키워드없이 정의 된 경우 기본 수정 자 액세스를 갖습니다.
액세스 수정 자 | 시계 |
---|---|
공공의 | 모든 수업에 표시됩니다. |
보호 | 패키지에있는 클래스와 다른 패키지의 하위 클래스에 표시됩니다. |
액세스 수정 자 없음 (기본값) | 패키지와 함께 클래스에 표시 |
은밀한 | 수업에서 함께 볼 수 있습니다. 수업 밖에서는 접근 할 수 없습니다. |
데모 클래스 :
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
다른 클래스의 클래스 멤버에 액세스 :
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
산출:
공개 멤버에 액세스 :
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
산출:
순경
중요 사항 :
- 액세스 지정자는 클래스의 가시성을 정의합니다.
- 키워드가 언급되지 않은 경우 기본 액세스 수정 자입니다.
- Java의 네 가지 수정자는 공용, 개인, 보호 및 기본값을 포함합니다.
- Private 및 Protected 키워드는 클래스 및 인터페이스에 사용할 수 없습니다.
결론
이 튜토리얼에서는 Java의 Access Modifiers를 자세히 살펴 보았습니다. Java는 기본, 공용, 개인 및 보호와 같은 네 가지 유형의 액세스 수정 자 또는 가시성 지정자를 제공합니다. 기본 수정 자에는 연관된 키워드가 없습니다.
클래스 나 메서드 또는 변수에 연결된 액세스 지정자가 없으면 기본 액세스가 있다고 가정합니다. 공용 액세스 한정자는 클래스 또는 패키지 내부 또는 외부의 모든 것에 대한 액세스를 허용합니다. 공개 수정 자의 경우 액세스 제한이 없습니다.
보호 된 가시성 지정자는 보호 된 멤버가 선언 된 클래스를 상속하는 서브 클래스에만 액세스를 허용합니다. 개인 액세스 수정자를 사용하면 개인 데이터 멤버에 대한 최소한의 액세스 가능성이 클래스 내에서만 액세스 할 수 있습니다.
수정자는 클래스, 생성자, 메서드 및 변수와 같은 데이터 멤버의 범위를 제한하고 클래스 또는 패키지가 액세스 할 수있는 제한을 정의합니다. 액세스 지정자는 Java에서 캡슐화 및 재사용을 권장합니다. 클래스와 인터페이스는 보호되거나 비공개가 될 수 없습니다.
=> 처음부터 Java를 배우려면 여기를 방문하십시오.