[JAVA] 6강 추상화 & Interface & 결합,응집도

KDH59·2024년 1월 30일
0

[JAVA]

목록 보기
6/13

매개 변수 다형성

  • 일반 변수에 사용하면 필드 다형성
  • 매개 변수에 사용하면 매개변수 다형성
    -> 매개 변수를 부모 객체 형태로 하여 들어오는 변수의 폭을 넓힐 수 있다.

oop 4대 특성

  1. 캡슐화 -> 다른 사용자에게 데이터 입/출력을 제한 Ex) PC 케이스

  2. 상속 -> 나에게 없는 기능을 부모로부터 받아 내것 처럼 사용한다.

  3. 다형성 -> 부모의 형태로 자식들이 들어 갈 수 있다. (자원의 효율성)

  4. 추상화 -> ?

    추상화

    -> 추상은 실체 간에 '공통되는 특성을 추출'하고 불필요한 정보를 제거해 '단순화' 시키는 것

    추상

    -> 규격을 잡다. 불필요한 정보는 제거해 단순화

    추상화의 목적

  • 보를 확실하게 전달 하기 위해

  • 추상클래스는 추상 매서드를 꼭 구현해야 하는 매서드등의 규격을 정할때

  • ※ 공통 또는 규격을 정하기 위해※

    추상클래스의 키워드

    -> abstract 키워드는 사용

    추상 클래스의 특징

  1. 추상 클래스는 자식 외엔 객체화 할 수 없다
  2. 추상 클래스는 추상 매소드가 있다
  3. 추상 클래스를 상속 받으면 추상 메서드를 강제로 override 하게 된다.
    -> 추상 메소드란 "형태만 있고 몸체는 없는" 매서드를 말한다
    -> 특정한 매서드를 강제로 오버라이드 해야 할 경우 설정

public abstract void 'must1' () {};
-> public abstract void must1 ();

public abstract void 'must2' () {};
-> public abstract void must2 ();

Interface란?

  1. 내가 실제로하면 복잡한 일은 간단하게 실핼 할 수 있도록 하는 기능
    -> 사용법이 고정되어 있다. 즉 규격화 되어 있다.
  2. 추상 매서드를 통해 공동 작업 시 규격을 잡아 주는 역할을 한다.
  3. 추상클래스의 Interface는 상속(Extends)이 아닌 구현(Implements)라고 부른다

Interface 의 특징

  1. 인터페이스는 복수개의 구현이 가능하다.

  2. 인터페이스도 다형성을 활용 할 수 있다.

  • 클래스의 다형성 -> 상속받은 클래스가 부모 클래스 형태로 들어가는 것
  • 인터페이스의 다형성 -> 구현 받은 클래스가 인터페이스 형태로 들어가는 것
  1. 인터페이스는 객체화 할 수 없다.
  • 규격이 있지만 실체화는 없어 인터페이스를 활요해주는 클래스가 필요하다
    (인터페이스는 규격의 개념이기 때문에)

※ 추상클래스와 인터페이스의 차이점

Interface 의 사용

  1. 인터페이스의 구현은 implements 키워드를 활용 또한 다중 구현이 가능하다
    -> 규격이라는 것은 필요한 만큼 가져다 사용 할 수 있다.
  2. 인터페이스 를 통해서도 특정 기능 사용에 대한 규격을 설정 할 수 있다.

Interface 의 상속

  • 인터페이스의 상속은 인터페이스끼리만 상속이 가능하다
    -> 기존에 있던 규격을 한 곳으로 모으기 위해

※ Interface의 상속과 class의 상속 차이점 ※

  1. class는 단일 상속만 가능
    interface는 다중 상속 가능

  2. class 다형성은 상속을 통해 구현됩니다. 부모 클래스 타입으로 자식 클래스의 객체를 다룰 수 있습니다.

    interface 다형성이 강조됩니다. 여러 클래스가 동일한 인터페이스를 구현하여 동일한 메서드를 제공한다.

  3. class는 추상 클래스를 통해 일부 메서드의 구현을 강제
    interfaces는 모든 메서드가 추상이므로, 인터페이스를 구현하는 클래스는 모든 메서드를 반드시 구현

☆ class 와 다르게 interface는 모듈구조를 갖기 때문에 복수개의 interface를 구현 및 상속이 가능하다.

요약

  1. class 와 다르게 interface 는 모듈 구조를 갖는다.

  2. 그렇기 때문에 복수개의 interface를 구현 및 상속이 가능 하다.

interface -익명 객체-

  • 클래스를 따로 정의하지 않고 익명 객체 내에서 즉석으로 직접 구현 하기 때문에

단 익명 객체로 인터페이스를 구현 받은 클래스는 다른곳에서 불러서 사용 할 수 없음,

익명 객체를 사용 하는 이유

일반적인 인터페이스를 활용 하는 법과 익명객체를 사용

  • 익명 객체를 사용하는 경우에는 클래스를 따로 정의하지 않고 익명 객체 내에서 즉석으로 직접 구현-

요약

  1. Interface 는 복수개의 구현이 가능하다.

  2. Interface 를 구현한 클래스는 해당 인터페이스 형태에 들어갈 수 있다.
    (다형성)

  3. Interface 를 구현 받는 즉석 객체를 만들 수 있다.
    (익명 객체)

  4. 이 객체는 즉석에서 만들어져서 이름이 없다.
    인터페이스를 구현 받는 클래스 이름이 없다

  5. 그래서 이것을 익명(anonymous) 객체 하고 부른다.

Interface의 결합,응집도

interface 와 abstract class의 사용 이유

  • 인터페이스와 추상화는 개발 시 전체적인 규격을 만들어 준다.

  • 인터페이스와 추상화는 활용 하면 모듈 간의 결합도를 감소(느슨하게, 데미지를 적게 입고) 시킨다.

  • 응집도는 높을 수록 좋다. 결합도 낮을 수록 좋다

  • 결합도 낮은 것들의 공통점 : 규격이 있어야 한다.

  • 결합도가 높은면 안 좋다. -> 무언가를 교체할때 어렵다.
    ex)결합도가 제일 높은 예 신체부위가 제일 높다

★ Interface 를 사용하면 결합도를 낮출 수 있다
★ 규격이 있다면 서로 다른 것들끼리 충돌 없이 사용 가능하기 때문에

[질문지]

  1. 추상화란?
    1-1 추상화의 예시

  2. 추상 클래스의 키워드

  3. 추상 클래스의 특징

  4. 추상 매서드란?
    추상 메서드를 사용하는 곳

  5. interface 활용할 떄 상속이 아닌 ??
    키워드

  6. interface 특징

  7. 추상메서드만 가질수 있다 그러나 1.8JDK로 넘어오면서 가능해진 기능들

  8. 클래스에서의 다형성과 인터페이스에서의 다형성

  9. 인터페이스 다중구현이 가능하다 왜? [class는 분류라는 개념때문에 불가능했다]

  10. 익명 객체란?

  11. 익명 객체의 특징 어느때 사용하는지?

  12. 익명 객체의 사용하면 좋지 않은 점

  13. 결합도란?

  14. 응집도란?

  15. 결합도를 낮추기 위해 무엇을 사용했나

  16. 어떤 역할을 하길래 결합도가 낮아지나

profile
[JAVA]

1개의 댓글

comment-user-thumbnail
2024년 1월 30일

[질문지]

  1. 추상화란?

1-1 추상화의 예시

  1. 추상 클래스의 키워드

  2. 추상 클래스의 특징

  3. 추상 매서드란?
    추상 메서드를 사용하는 곳

  4. interface 활용할 떄 상속이 아닌 ??
    키워드

  5. interface 특징

  6. 추상메서드만 가질수 있다 그러나 1.8JDK로 넘어오면서 가능해진 기능들

  7. 클래스에서의 다형성과 인터페이스에서의 다형성

  8. 인터페이스 다중구현이 가능하다 왜? [class는 분류라는 개념때문에 불가능했다]

  9. 익명 객체란?

  10. 익명 객체의 특징 어느때 사용하는지?

  11. 익명 객체의 사용하면 좋지 않은 점

  12. 결합도란?

  13. 응집도란?

  14. 결합도를 낮추기 위해 무엇을 사용했나

  15. 어떤 역할을 하길래 결합도가 낮아지나

답글 달기

관련 채용 정보