[Java] 기초10 (제어자, Generics)

sua_ahn·2023년 1월 5일
0

Java

목록 보기
13/15
post-thumbnail

제어자 Modifier

: 클래스, 멤버변수, 메소드 선언부에 사용되어 부가적 의미 부여

 

🚥 접근 제어자

: 외부 접근 제어 → 캡슐화(은닉)

 
cf) Encapsulation 캡슐화
: 객체가 가진 상태나 행위를 다른 이가 사용하거나 보지 못하도록 숨김

 

  • public : 클래스 참조로 외부에서 직접 접근 가능
  • private : 클래스 외부에서의 접근 차단
  • protected : 같은 패키지 혹은 자식클래스에서만 접근 가능
  • 접근 제어자를 붙이지 않은 default 상태 : 같은 패키지에서만 접근 가능

    메소드 90% 이상 public
    멤버변수 90% 이상 private → getter, setter로 접근

    getter, setter 자동생성 방법
    Source메뉴 → "Generate Getters and Setters" → Select All → Generate



public class MyClass {		// 클래스에는 public과 (default)만 사용
	private int my;			// 해당 클래스 블록{} 안에서만 사용
    
    // getter
    public int getMy() {	// 클래스 외부에서 접근 가능
    	return my;
    }
}


🚧 static

: 인스턴스 소속이 아닌 클래스의 고정 멤버

  • 정적 변수 (= 클래스 변수 = 전역 변수)

    • 객체 생성없이 클래스명.정적변수로 접근 가능
  • 정적 메소드

    • 객체 생성없이 클래스명.정적메소드()로 접근 가능
    • 인스턴스나 부모 인스턴스와는 소속이 다르므로 메소드 내에서 참조 불가
        (this, super 키워드 사용 불가)


public class Main {
	public static main(String[] args) {
    	// 객체 생성없이 사용
    	System.out.println(Holiday.jan);
        Holiday.newYear();
    }
}

class Holiday {
	static int jan = 1;			// 정적 변수
    
    static void newYear() {		// 정적 메소드
    	System.out.println("Happy New Year!");
    }
}

변수 참고

 

🏁 final

: 불변의, 마지막의

  • 변수 : 상수화 → 변수명 대문자로 작성
  • 클래스 : 상속 금지(부모클래스로 사용 금지)
  • 메소드 : 오버라이딩 금지

 


Generics

: 자료형을 클래스 내부에서 지정하는 것이 아닌, 외부의 사용자에 의해 지정되도록 하는 것

자료형의 매개변수(type parameter) 사용



class Box<T, P> {		// Diamond(<>) 안에 있는 변수들 = type parameters
	T temp;
    P variable;
    
    public Box(T temp, P variable) {
    	this.temp = temp;
        this.variable = variable;
    }
    
    public T getTemp() {
    	return temp;
    }
}
public class Main {
	public static main(String[] args) {
    	// 객체 생성 시 자료형 지정
    	Box<String, Integer> box = new Box<String, Integer>("t", 0);
    }
}
profile
해보자구

0개의 댓글