ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제어자
    Programming/JAVA 2020. 6. 13. 02:09

    제어자는 클래스와 변수 그리고 메서드의 선언부에 사용되며 부가적인 의미를 부여한다.

    제어자의 종류

    • 접근제어자 public protected default private
    • 그        외 static final abstract native transient synchronized volatile strictfp

    사용시 주의사항

    • 클래스나 멤버변수 메서드에 주로 사용되나 여러자를 조합하는 것이 가능.
    • 하지만 접근제어자는 여러가지를 섞어서 쓸 수 없다.

    1. static 

    static 은 다뤘던 내용이다. '공통적인'이라는 의미를 가지고 있는데, 우리가 앞부분에서 인스턴스를 만들어 각각의 인스턴스에 서로 다른 값을 줬지만 static 이 붙은 변수나 메서드는 인스턴스 생성없이 사용이 가능하며 클래스가 로드 되자마자 메모리에 로드되는 것을 알 수 있었다. 앞에서 우리는 인스턴스를 사용하지 않는 메서드는 static메서드로도 고쳐보고 했었다. 기억이 안나면 다시 변수와 메서드로 가보자. 값을 공유하고 있는 static 은 공통적인 이라는 것을 알고있자.

     

    2.final

    마지막의, 변경이 될 수 없는 이라는 뜻이다. 거의 모든 것에 사용이 된다고 한다.

    ● 변수에 사용되면 변경할 수 없는 상수가 된다.

    ● 메서드에 사용되면 오버라이딩 할 수 없다.

    ● 클래스에 사용되면 자신을 확장하는 자손클래스를 정의하지 못한다.

     

    class Card{
    	final int NUMBER;
        final String KIND;
        static int width=100;
        static int height=250;
        
        Card(String kind, int num){
        	KIND=kind;
            NUMBER=num;
        }
        
        Card(){
        	this("HEART",1);
        }
        
        public String toString(){
        	return KIND+" "+NUMBER;
        }
    class FinalCardTest{
    	Card c = new Card("HEART",10);
        c.NUMBER=5;
        System.out.println(c.KIND);
        System.out.println(c.NUMBER);
        System.out.println(c);//System.out.println(c.toString());
    }

    잠깐... 코드블럭 쓸 수 있었잔아... 자주 애용해야겠다... 나만 모르고있었어...

     

    ▼  ● 변수에 사용되면 변경할 수 없는 상수가 된다. 

     

    이런식으로 final 이라도 각각의 인스턴스에 대해서 final 변수의 값을 바꿔줄 수 있어.

    책에 나온 내용인데 카드의 경우 52장의 카드가 있는데 카드의 값을 바꾸기보다는 카드의 순서를 바꾸라는 말이 있다.

    그게 더 안전한 방법이다. 우리 그렇게 쓰자.

     

     

    3.abstract

    사전적의미로 추상적인 이라는 뜻이다.

    정의는 메서드의 선언부만 작성하고 실제 수행내용은 구현하지 않ㅇ느 추상 메서드를 선언하는데 사용된다.

     

    ● 클래스에 선언하게 하면 추상메서드가 클래스내에 선언되어있다.

    메서드는 선언부만 작성하고 구현부는 작성하지 않은 추상메서드.

     

    abstract class test{//추상클래스 추상메서드를 포함한 클래스라는 뜻
    	abstract void testabstract(){ //선언부만 작성되고 구현부는 작성하지 않은 메서드라는 뜻
        }
    }

    제어자의 종류

    • 접근제어자 public protected default private
    • 그        외 static final abstract native transient synchronized volatile strictfp

    이번 부터는 접근제어자다. 접근 제어자는 멤버와 클래스에 사용되어 밖에서 참조하지 못하게 제한 하는 것이다.

    범위가 넓은 순 부터 나열 하자면 public > protected > default > private 순으로 나열할 수 있다.

     

    public : 접근에 전혀 제한이 없다.

    protected : 패키지에 관계없이 상속관계에 있는 자손클래스에서 접근할 수 있도록, 또는 같은 패키지 내에서도 접속 가능

                         (일부 default 기능도 존재하기도 함.)

    default : 같은 패키지내의 클래스에서만 접근이 가능하도록 함.

    private : 같은 클래스 내에서만 사용 되도록 제한.

     

      같은 클래스 같은 패키지 자손 클래스 전 체
    public
    protected  
    default    
    private      

    접근제어자를 이용하게 되면 외부에서 접근 시도를 줄일 수 있고, 외부적으로 알려지면 불필요한 것들을 내부에 숨길 수도 있다. 또 만약에 나중에 코드 수정이 필요하다고 하면 메서드에 public 이 있으면 소스코드를 다 뒤져야 하는데 private라고 예를 들어 주기 되어 있으면 같은 클래스만 보면 된다. 이처럼 제어자 하나하나가 정말 큰 변화를 만든다고 한다. 나중에 실전 때 쓰는 버릇좀 들여야겠다.

     

     

     

     

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

    abstract include interface  (0) 2020.06.27
    형변환(메모)  (0) 2020.06.16
    super  (0) 2020.06.12
    오버라이딩(overriding)  (0) 2020.06.09
    상속(inheritance) - 중간 저장  (0) 2020.06.08
Designed by Tistory.