[Java] 객체지향 프로그래밍 - final, abstract
by 우와한개발자
[ final ]
final 키워드는 클래스, 메서드, 변수에 적용하고 abstract와 동시에 사용 불가
1. final 클래스
- 상속 불가 (ex String 클래스는 상속 불가)
2. final 메서드
- 상속 가능하나 재정의 불가
3. final 변수
- 값 변경 불가(상수)
- 선언과 동시에 초기화 필수.
- final 변수는 메모리 공간 절약위해 static과 함께 사용.
지역변수 local class
- 메서드(함수)나 블록({ })안에 선언되어 해당 범위내에서만 접근 가능한 변수
지역 클래스 local class
- 메서드 안의 클래스
- 로컬 클래스에서 외부 클래스의 멤버변수와 지역변수 참조 가능
- 로컬 클래스에서 외부 클래스의 지역변수를 참조할때 해당 지역변수를 final 로 선언해줘야함.
public class Outer{ public int a = 1; public void method(){ final int b = 2; // Outer클래스의 지역변수 class InnerLocal{ public void innerMethod(){ System.out.println(a); // Outer 클래스의 멤버변수 참조 가능 System.out.println(b); // Outer 클래스의 지역변수 참조 가능 } } } }
[ abstract ]
abstract는 클래스, 메서드에 사용되고 final과 동시에 사용 불가.
abstract class Parent{
int a;
int b;
public Parent(){};
public Parent(int a, int b){ this.a = a; this.b = b;}
abstract void method();
// abstract void method2(); Error
}
class Child extends Parent{
void method(){};
}
1. 추상 클래스
- 객체 생성 불가 (반드시 상속을 통해서만 사용 가능)
- 생성자는 가질 수 있음. (자식 클래스 생성자 안에서 super() 호출 가능)
- abstract 메서드 가질 수 있음.
- 구현된 메서드 가질수 있음.
- 추상메서드가 없어도 추상 클래스가 될 수 있지만, 추상 메서드가 있으면 클래스는 무조건 추상클래스여야 함.
2. 추상 메서드
- 구현부가 없는 메서드
- abstract 클래스 안에서만 가능
'언어 > Java' 카테고리의 다른 글
| [Java] 예외(Exception) - try catch문, throws, throw , 예외 종류 (0) | 2026.03.02 |
|---|---|
| [Java] 객체지향 프로그래밍 - 인터페이스(Interface)란? (0) | 2026.03.02 |
| [Java] 객체지향 프로그래밍 - static 구문, 초기화블록, 싱글톤 디자인 패턴 (0) | 2026.02.27 |
| [Java] 객체지향프로그래밍 - 다형성 (0) | 2026.02.27 |
| [Java] 객체지향프로그래밍 - 캡슐화, 상속, 접근제한자 (0) | 2026.02.27 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자