우와한 개발자

[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 클래스 안에서만 가능

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기