-
[JAVA 공부 6일차] static, final, abstract, 접근 제어자 알아보기JAVA 2022. 7. 27. 16:16728x90반응형
1. static
class staticTest{ static int width; // 클래스(static) 변수 static int height; // 클래스(static) 변수 static { // 클래스 초기화 블록 (복잡) width = 100; height = 200; } static int max (int a, int b){ // 클래스(static) 매서드 return a > b ? a : b; } }
만약 이런 클래스가 있다면 여기 있는 모든 멤버는 인스턴스를 생성하지 않고도 사용할 수 있습니다.
static의 경우 파일이 실행될 때 메모리에 올라가며 몇 개의 인스턴스를 생성하더라도 최초 1회만 초기화됩니다.
static은 인스턴스 멤버에만 사용할 수 있습니다.
2. final
final class FinalTest{ final int Max_size = 10; final int Max(){ final int lv = Max_size; return lv; } }
- final이 클래스 앞에 있다면 이 클래스는 부모 클래스가 될 수 없습니다.
- final이 변수 타입 앞에 있다면 이 변수는 상수가 되어 변경이 불가능합니다.
- final이 메서드 앞에 있다면 이 매머드는 오버 라이딩이 불가능합니다.
3. abstract
abstract class AbstractTest{ abstract void func(); }
- abstract가 클래스 앞에 있다면 이 클래스 내부에 추상 메서드가 있다는 걸 의미합니다.
- 추상 클래스라고 부른다.
- abstract가 메서드 앞에 있다면 선언 부만 작성되고 구현부가 작성되지 않은 미완성 메서드를 의미합니다.
- 추상 매서드라고 부른다.
class main{ AbstractTest test = new AbstractTest(); 💥 에러!! } abstract class AbstractTest{ abstract void func(); }
추상 클래스는 미완성된 클래스이기 때문에 인스턴스를 생성할 수 없다.
이렇게 미완성된 클래스를 왜 만드는지 아직은 배우지 않았지만 추상 클래스를 사용하는 방법은 다른 클래스에서 상속을 받아 완전한 클래스로 만든 후 사용할 수 있다.
4. 접근 제어자
접근 제어자가 접근할 수 있는 범위 - private : 선언된 클래스 내에서만 사용이 가능합니다.
- default : 선언된 패키지 내에서만 사용이 가능합니다.
- protected : 선언된 패키지 내에서 사용이 가능하며 다른 패키지의 첫 번째 자식 클래스에만 사용이 가능합니다.
- public : 제약 조건 없이 어디서나 사용이 가능합니다.
접근 제어자는 이름처럼 무언가에 접근할 수 있는지 없는지를 알려줍니다.
클래스 앞에 붙일 수 있는 접근 제어자 알아보기 public class {...} // ok default class {...} // ok - default의 경우 생략이 가능합니다. protected class {...} // 💥Error private class {...} // 💥Error
클래스 외에 인스턴스 멤버에는 4가지 접근제어자 모두 사용이 가능합니다.
728x90반응형'JAVA' 카테고리의 다른 글
[JAVA] 객체지향 2편 제어자 다형성 (0) 2022.08.02 [JAVA] 객체지향 2편 (1) 2022.08.01 [JAVA 공부 6일차] 객체지향 Part 4 (0) 2022.07.27 [JAVA 공부 5일차] 객체지향 Part 3 (0) 2022.07.27 [JAVA 복습] 객체지향, 배열, 연산 (1) 2022.07.26