static void public private protected class super this @Override
0. 선언이란 메모리에 공간을 만드는 것이다.
1. void는 return값이 없다, return이 있을 경우에는 public int Exmaple()와 같이 "int" 처럼 반환되는 값의 반환형을
설정해 줘야한다.
2. static은 메모리에 제일 먼저 할당되어서 따로 인스터스를 생성하여 불러오지 않아도 된다.
3. 접근제어자는 public private protected가 있다. protected는 잘 쓰이지 않고 public과 private를 쓴다.
private는 예를 들어서 class가 놀이동산일 때 그 아래에 바이킹과 롤러코스터가 있다. 바이킹의 요금과 롤러코스터 요금은 다르기 때문에 롤러코스터에서 바이킹 요금을 불러오면 안되기때문에 그 경우 priavte로 지정해준다.
4. super()는
예를 들어 이경우
부모클래스의 값을 이용(?)하는 것이다.
그리고 this.는 위 사진에서 그냥 x를 쓰면 뭐가 뭔지 다른사람과 같이 프로젝트를 할 때 혼돈을 야기할 수 있기때문에 this.로 정의를 해주면 한 눈에 알아보기가 쉬워진다.
위에 사용된 private int x; 말고 private static int x; 를 사용해 메모리에 할당을 시켜준다면
본 사진처럼 this.x = x; 대신에 PointThree.x = x; 사용해도 전혀 무방하다.
5. @Override는 상위클래스의 고정된 값을 변경하고 싶을 때 사용한다.
예를 들어 equals의 경우 위 사진과 같은 형태를 띄고 있고, return값이 this == obj로 주소만을 비교하여 같으면 true , 다르면 false를 출력한다. 하지만 equals의 경우 저 값을 리턴하는 것이 아니고 다른값을 리턴하고 싶으면
본 사진처럼 { }사이의 조건들을 수정하고 return 값을 수정한다. 여기서 public boolean equlas(Object object) 는 정형화되어있는 것이기 때문에 public을 private , boolean을 int or string 으로 변경하는 것은 불가능하다.
위 사진은 move가 @Override와 super.move(x, y)가 되어있는 경우다.
원래 부모클래스인 PointThree에는 위와 같은 형식으로 정의되어있다. 하지만 PointThree를 extends한 PositivePoint이기 때문에 equals를 예를 들어 설명한 것처럼 protected void move(int x, int y) 값은 건들면 안되기때문에 @Override를 하여 원하는 조건으로 수정해주었다. super(x, y)도 Override를 사용했기때문에 부모클래스의 this.x , this.y값을 사용하여 move메소드에서 사용됐다.
6. 전체적으로 처리 순서는
static 선언이 된 변수나 클래스들이 메모리에 할당돼고 그 다음 메인메소드에는 static이 있기때문에 당연히 메모리에 할당된다. 그 그다음 메인메소드에 사용된 클래스, 메소드의 순서에 따라 순서대로 처리가 된다.
'Java' 카테고리의 다른 글
자바의 컴파일 과정 (0) | 2021.10.31 |
---|---|
[JAVA] Wrapper Class와 일급 컬렉션 (0) | 2021.10.17 |
[JAVA] Lambda와 Stream (0) | 2021.10.09 |
[JAVA] 제네릭(Generic) (0) | 2021.08.15 |
[JAVA] 클래스 · 객체 · 인스턴스 (0) | 2021.08.14 |