패스트터틀

(basic) abstract, interface, implement, extends, throws ... 본문

Development language/java

(basic) abstract, interface, implement, extends, throws ...

SudekY 2020. 1. 24. 15:54

 본 포스팅은 블로거가 개발언어의 개념정리 필요를 위한것입니다.

목차와 차례가 뒤죽박죽이며 오직 블로거의 편의목적을 위해 작성되었음을 알려드립니다. 

 

- abstract

- interface

- implement

- extends

- throws

- public, protected, default, private

- final

- static

- final static

 

 

- abstract

추상화 하는것으로 객체들의 특징들을 뽑아서 추상화 시키는것이다.

추상이란 쉽게 말해서 사람(객체)과 고양이(객체)의 공통적인 특징들을 뽑아내는 날것의 정보이다.

 

 

- interface

우선 인터페이스는 클래스가 아니다. 그냥 인터페이스라는 하나의 개념이다.

추상화하는것으로 협업자간의 상호작용을 위한것

반드시 인터페이스안에 메서드를 사용을 강제함

다이아몬드문제(자바는 왜 다중상속을 지원하지 않을까 링크참고)때문에 다중상속을 지원하지 않음

https://siyoon210.tistory.com/125

 

자바는 왜 다중상속을 지원하지 않을까? (다이아몬드 문제)

다이아몬드 문제 다중 상속을 지원하게 되면 하나의 클래스가 여러 상위 클래스를 상속 받을 수 있습니다. 이런 특징 때문에 발생하게 되는 문제가 있는데, 바로 '다이아몬드 문제' 입니다. 위의 클래스 다이어그..

siyoon210.tistory.com

하지만 defalut 라는 기능이 생기면서 어느정도 구현이 가능해짐으로써 이러한 의미도 사라지고있다는 의견도있다.

실제에서는 데이터베이스 관련 함수를 호출할때 사용된다고한다.

 

 

- implement

부모의 메소드를 받아서 재정의 하기위한 인터페이스를 상속(?)하기 위한것

상속이라고 하기보다는 머라고 할까 애매한 부분이 없지 않아 있는것같다.

 

 

- extends

상위클래스기능 ----(to)--> 하위클래스

상속을 위해 사용하는것

 

 

- throws,throw

예외처리 던질때 사용

throw는 메소드내에서 상위블럭으로 던짐, 프로그래머가 사용자 정의 exception을 강제로 발생시킬때 사용

throws 현재 메서드에서 자신을 호출한 상위메서드로 exception발생

 

 

- public, protected, default, private

public : 접근 다 허용

protected : 동일 패키지, 파생클래스만 허용

default : 동일 패키지(접근지정자 설명안하면 자동으로 설정되는것)

private : 동일 클래스에서만 허용

 

 

- final

 

1. 한번만 초기화 가능 , 두번 불가능클래스에서 사용할 해당 멤버 변수의 데이터와 그 의미, 용도를 고정시키겠다는 뜻

final int a=2;
a = 3; << 불가능

2. 재정의 불가능용

class t{
	public final void t2(){
	}
}

public class a extends t{
	public t2() // << 재정의 불가능
}

3. 상속도 못하게 막을수있음

final class t

class a extends t // << 불가능

 

- static

1. 인스턴스 쓰지 않고 바로 사용가능

public class a{
	static public int i=2;
   	public int b;
    static public void h(){
    
    }
}

a A = new a();
A.i;
A.y();   
//  ㅣ
//  ㅣ
//  ▼▼▼
a.i
a.y()

 바로 사용 가능, 왜냐하면 메모리에 고정시켜놓기 때문에

 

2. 인스턴스를 안만드니까 메모리 아낄수 있음

 

3. 위에서 static public void h()안에다가 b변수 사용불가능, 왜냐하면 이미 메모리에 올라가있는데 b는 메모리에 고정되어있는것이 아니기때문

 

4. 공통된 값을 유지한다면 static 붙히는걸 권장

 

5. For 공유, 객체와 무관한 메소드, 단 한번만 동작

 

6. 전역변수의 성격을 가지고있음

 

 

- final static 

 

https://djkeh.github.io/articles/Why-should-final-member-variables-be-conventionally-static-in-Java-kor/

 

왜 자바에서 final 멤버 변수는 관례적으로 static을 붙일까?

자바 final, static 키워드와 코딩 best practice 되짚어보기

djkeh.github.io

요약 : 클래스에서 사용할 해당 멤버 변수의 데이터와 그 의미,용도(final)를 고정(static)시키겠다는 뜻

Comments