본문 바로가기
JAVA/★객체지향

접근 제어자 public private

by SEOKIHOUSE 2023. 3. 13.

 

1.private :같은 클래스 내에서 접근 가능

/// 점점 프로그램 복잡해지고 배우는 수준이 높아지면 protected, default 미묘한 차이점을 나중에 적용하자~ 일단은 private public만 기억하기

2. public : 언제나 접근 가능

결과값: public void y()
            public void z()

*사용하는 이유?

ex) 은행창구 - public // 은행금고- private

그럼 이 예로 위의 코드를 해석해보자

AccessDemo1 (고객)안에서 main메소드에서 a클래스 y,z,x에 엑세스 하고있음 -----> public string y,x (창구) // z(금고)


즉, 사용자가 의도하지 않은 방법으로 내부 메소드를 바꾸는 불상사가 없도록 하는 것(private)사용

===사용하도록 의도되어 있는 인터페이스들만을 사용하도록 하는 것~

혹시라도 금고에 접근해서 돈 빼가면 안되니깐~


4)세밀한제어(이런게 있구나 개념만 알아두자.. 너무 복잡해 초심자한텐 ㅠㅠ)

default -접근제어자 명시안하면 default가 됨 ex) void _default....

protected

*checker 클래스 -> 다른패키지other / 같은패키지same에 접근해보자

1. new 사용 해서 same(같은 패지키)접근 - public, protected, default 접근가능

2. checker가 same에게 상속받을 때 - > public, protected, default 접근가능

*other(다른패키지)

1. public만 접근가능 (상속관계 아닐경우)

2. otherpackagecheker가 other한테 상속받으면 -> public protected는 접근가능

 
 

1~4는 클래스 멤버에 대한 접근제어자를 설명

5. 클래스 접근 제어자 -->>public, default

*default (class앞에 아무것도 없을 경우) - 접근제어자 x 같은 패키지 내에서만 사용이 가능해서

*public은 가능하지만 다른 패지키에 import해도 사용이 안된다!!!!

DefaultClass defaultClass = new DefaultClasss();

*중요한 제약사항?!

소스코드는 public클래스의 클래스 명과 소스코드 파일명이 같아야한다 ---->하나의 퍼블릭클래스만 존재 가능하다

ex)코드 이름은 PublicNameDemo.java

public class PublicName {} -> 오류

public class PublicNameDemo {} --> 실행 가능