[Java] final제어자, abstract 제어자

김나우·2022년 1월 6일
0

Java

목록 보기
8/15

참고 도서
Do it 자바 완전정복

final 제어자

final 제어자는 필드, 지역변수, 메서드, 클래스 앞에 위치할 수 있다

final 변수

fianl 제어자는 변수를 선언할 때만 지정할 수 있으며 final 변수는 한번 대입된 값을
수정할 수 없다.
어떤 필요에 따라 복사본을 하나 만들어 놓음으로써 원본이 삭제 된 이후에도 그 값을 활용 할 수 있게 하는 것이 final변수의 기능이다

class Test{
	int a = 3;
    final int b = 2;
}

A a = new A();
a.a = 5;	//가능
a.b = 8;	//불가능

final 메서드와 final 클래스

final 메서드와 final 클래스의 기능은 직관적이다.
final 변수와 마찬가지로 final 메서드와 final 클래스도 각각 최종 메서드, 최종 클래스의 의미를 지닌다.
즉, 메서드를 final로 정의하면 자식 클래스에서 해당 메서드를 오버라이딩할 수 없다.

class Test{
	final void save(){
    }
}

class Test2 extends Test{
	void save(){}	//불가능    
}
final class Test{}

class Test2 extends Test{}	//불가능

abstract 제어자

abstract의 사전상 의미는 추상적인이다. abstract가 붙은 메서드를 추상메서드
abstract가 붙은 클래스를 추상클래스라 한다.
'추상적'이라는 의미는 '구체적이지 않다'는 것이다.
추상메서드는 쉽게 중괄호가 없는 메서드라고 생각하면 된다

abstract 리턴 타입 메서드명();

추상 메서드는 아직 무슨 기능을 정의할지 정해지지 않은 미완성 메서드라고 생각하자

// 추상 메서드를 1개 이상 포함하고 있으므로 추상클래스로 정의
abstract class Test1{
	abstract void save();	//추상 메서드
}

class Test2 extends Test{
	void save(){
    	System.out.println("save");
    }
}

Test1 t = new Test2();
t.cry();	//save

abstract 제어자의 장점

1. 상속을 통해 중복 코드를 줄일 수 있다.
2. 자식 클래스를 그룹화할 수 있다.
3. 비 실존 객체의 직접 생성 차단하여 실수를 사전에 방지한다.
profile
안녕하세요

0개의 댓글