재밌고 어려운 IT를 이해해보자~!

추상화와 인터페이스 본문

교육전 개인공부

추상화와 인터페이스

언제나즐거운IT 2023. 10. 16. 23:48

어제 갑자기 abstract랑 implements가 나왔지만 그에대한 설명은 부족했어서 뭔가 싶었는데!!!!!!

오늘 알게되었다!

그리고 자료를 작성했는데분명 다사라졌다!!!

 

추상화 메서드 or 클래스 란! 

다양성을 위해 메서드의 선언은 동일해야 하지만 실제로 구현하는 내용은 자식 클래스마다
달라야 할 떄  부모 클래스의메서드를 비워 오버라이딩을 이용해 구현해낼 수 있다.
자바는 이것을 abstract 라는 키워드를 사용하여 공식지원. 
메서드의 내용을 비워놔야하며 추상화 클래스는 객체화 할 수 없다.
자식 클래스의 생성자에서 super(); 를 통해 추상 클래스의 생성자를 호출하여 부모 객체를 생성한 후 자식 객체를 생성한다.

 

추상화 클래스는 객체화가 불가능 하기 때문에 자식클래스로 상속시켜서 오버라이딩을 통한 메서드 재구현을 많이

하는 것 같다!

 

인터페이스란!!!!

interface는 클래스가 아니며 모든 메서드가 추상화 메서드로 구성되어있다.생성자를 통한 선언 즉 객체화가 불가능
생성자 호출이 불가능하다 

인터페이스는 기능 명세서라고도 부르기도 하는데 그이유는 모든 메서드가 정의되어있고
여기서 정의가 되어있다는 것은 기능이 규격화되어있다는것.
인터페이스는 상속과 좀 다르다. A,B,C의 구현클래스가 인터페이스가 가지고있는 규격기능을 구현하고

기능 클래스가 인터페이스를 통해서 A,B,C를 가져다 쓴다.

즉 구현 클래스들의 기본 틀을 제공하면서, 다른 클래스 코드들과의 사이에서 중간 매게 역할을 한다.

추상 클래스는 자식 클래스들의 공통적 특징을 추출하고 제공하는 것이 주된 역할이었다면, 인터페이스는 그뿐 아니라 다른 클래스 코드들과의 중간 매게 역할을 하는 것을 중점으로 생각할 수 있다.
인터페이스에서는 public abstract void add(); 같은 식으로 public abstract를 붙여야 하는게 원칙이지만 

어차피 추상화 메서드라는것을 알기 때문에 생략을 해도 된다.


일반적으로 다음과 같이 객체를 선언하지만 ,
ApplePhone app = new ApplePhone();
인터페이스에선 부모타입으로 객체를 선언 할 수 있따.
삼성폰, 엘지폰을 만들던 모든 메서드를 사용 할 수 있기 때문이다.
인터페이스는 다중 상속이 가능하다.

 

인터페이스를 연결할떄는 implements(구현하다) 사용 확장하는게 아니기 때문.
클래스확장이아니라 부모클래스를 구현하기 위해 만드는것.

 

같은것끼리는 extends, 다른거끼리는 implements 라고 외우면 쉽다.

 

인터페이스와 클래스의 다중상속
인터페이스 끼리의 상속도 가능 
인터페이스 2개일떄 하나의 클래스와 다중상속 보다는
인터페이스 2개를 1개로 묶어서 1:1 로 상속하는걸 선호
그이유는 부모의 인터페이스 타입으로 자식을 객체화할때 부모가 1개여야 더 편하다.


* 상수 선언하는법 !
상수란 항상 같은값을 표현한다. 
다음 코드는 항상 메모리에 30으로 떠있음.
public static final int a = 30;

상수 표기법!
모두 대문자, 언더바로 표현 

SUPER_MAN
public static final int PI = 3.14;

 

'교육전 개인공부' 카테고리의 다른 글

익명클래스  (0) 2023.10.18
내부클래스  (0) 2023.10.17
상속  (0) 2023.10.15
생성자  (2) 2023.10.14
클래스  (2) 2023.10.13
Comments