보안 전공생의 공부

클래스(2) | 접근 제어자, 정적변수·메소드 본문

Language/JAVA

클래스(2) | 접근 제어자, 정적변수·메소드

수잉 2021. 1. 31. 07:52

(출처 : wikidocs.net/232 www.tcpschool.com/java/java_modifier_accessModifier )

 

◆ 접근 제어자 (Access Modifier)

- private → default → protected → public 순으로 보다 많은 접근 허용

 

(1) private

 : 접근제어자가 private로 설정 → private이 붙은 변수, 메소드는 해당 클래스에서만 접근 가능

출처 : http://www.tcpschool.com/

 

secret 변수와 getSecret메소드는 오직 Private 클래스에서만 접근 가능

 

(2) default

 : 접근제어자를 별도로 설정 X → 접근제어자 변수, 메소드는 해당 패키지 내에서만 접근 가능

출처 : http://www.tcpschool.com/

 

Default.java
DefaultHome.java
실행결과

package가 practice로 동일한 Default, DefaultHome 클래스이다.

Default 클래스의 animal 변수는 접근제어자가 별도로 설정되어 있지 않은 default이다.

DefaultHome 클래스의 main메소드에서처럼 tiger.animal로 Default의 animal 변수에 접근 가능

 

(3) protected

 : 접근제어자가 protected로 설정 → protected가 붙은 변수, 메소드는 동일 패키지 내 클래스or해당 클래스 상속받은 외부 패키지의 클래스에서 접근 가능

출처 : http://www.tcpschool.com/

 

SameClass.java

practice 패키지 내에 속한 SameClass 클래스

ChildClass.java
실행결과

SameClass 클래스를 상속받은 ChildClass 클래스

이 둘의 패키지는 각각 practice , practice.other로 다르다.

SameClass 클래스 내 변수의 접근제어자가 protected이므로 다른 패키지 내에 있는 클래스에서 접근이 가능하다.

 

(4) public

 : 접근제어자가 public으로 설정 → public이 붙은 변수, 메소드는 어떤 클래스에서라도 접근 가능

출처 : http://www.tcpschool.com/

 

 

 

 

※ 정리

접근 제어자 같은 클래스의 멤버 같은 패키지의 멤버 자식 클래스의 멤버 그 외의 영역
public
protected X
default X X
private X X X

 


(출처 : wikidocs.net/228 )

◆ static

▶ static 변수

 : 항상 값이 변하지 X 경우 사용 → 객체를 생성할 때마다 메모리를 별도로 할당할 필요 X

☞ 메모리 사용의 이점

 

static이 붙은 변수 lastname → 자바는 메모리 할당을 한 번만 함

 

+)) lastname이 변경되지 않길 원하면 static 앞에 final 붙이면 됨

 

<cnt 늘리기>

static이 붙은 cnt는 값이 공유되어 (같은 메모리를 가리키고 있기 때문에)

c1, c2, c3 객체 생성시 카운트가 증가된 값이 나오게 된다.

 

▶ static 메소드

: utiliy성 메소드를 작성할 때 많이 사용 ex) 오늘 날짜 구하기, 숫자에 콤마 추가하기 등

※ static 메소드 내에서는 인스턴스 변수 접근 불가능

 

+))util 클래스에 대해

m.blog.naver.com/PostView.nhn?blogId=tmondev&logNo=220976934466&proxyReferer=https:%2F%2Fwww.google.com%2F

 

Util클래스 어디까지 써봤니? 일 편하게 하는 유틸성 클래스

게으른 개발자가 되어라라는 말이 있습니다. 이 말은 게으르게 일을 하라는 것이 아니라, 같은 일을 해도 ...

blog.naver.com

 

<날짜를 구하는 util 클래스>

실행결과

static메소드로써 getCurrentDate를 이용해 오늘 날짜를 구한다.

'Language > JAVA' 카테고리의 다른 글

상속, 다형성, 추상 클래스  (0) 2021.02.14
클래스 관련 문제풀이  (0) 2021.01.31
객체지향프로그래밍에 대해 /클래스 (1)  (0) 2021.01.23
백준 2739번  (0) 2021.01.18
백준 2839번(미완)  (0) 2021.01.18
Comments