추상화 & 인터페이스

devlsn96·2024년 7월 31일
0

java 언어 개념정리

목록 보기
12/27

1. 상속성과 다형성의 필요성

  • 상속성은 객체간의 공통적인 기능을 관리하기 위한 기법으로, 코드의 재사용을 통하여 프로그램의 유지보수를 편리하게 한다.
  • 다형성(Override, Overload)은 서로 다른 기능이지만 메서드의 이름을 공통되게 처리함으로서 전체 프로그램의 일관성을 유지한다.

1-1. 오버라이드 처리의 문제발생 가능성

  • '@Override' 키워드를 사용하지 않고, 메서드를 재정의 하는 과정에서 메서드 이름에 실수가 발생하더라도 에러가 아닌 새로운 메서드의 정의로 인식 되므로, 의도하지 않은 실행결과를 가져올 수 있다.

  • @Override키워드를 사용하더라도 자식 클래스를 구현하는 개발자의 실수로 인하여 부모의 기능을 재정의하지 않았다면 다형성의 구현은 이루어지지 않게 된다.

1-2. 상속처리시 Override를 강제하기

  • 추상화 기법은 특정 클래스를 상속받은 경우
    부모의 클래스의 특정 메서드를 무조건 재정의하도록 강제하는 기법이다.

  • 특정 메서드를 재정의하도록 강제하므로써
    자식 클래스들을 작성하기위한 가이드 역할 할 수있다.

  • 즉 추상화 기법은 java클래스를 작성하기 위한
    설계도를 소스코드형태로 제시하는 역할을 한다.

1-3. 추상메서드 만들기

  • 추상 메서드를 정의하기 위해서는'adstract' 키워드 사용해서 메서드를 정의한다.

  • 추상 메서드는 자식 클래스가 구현해야하는 메서드의 가이드라인만 제시하기 위한 목적으로 사용되기 때문에, 선언만 가능하고 구현부가 없다.

    	public adstract void sayHello();

1-4. 추상클래스

  • 추상메서드를 포함한 클래스

  • 추상메서드를 하나라도 포함하고 있는 클래스는 반드시 '추상 클래스'로 정의되어야 한다.

  • 추상클래스 'adstract' 키워드를 사용하여 정의할 수 있다.

    	public abstract class Hello{
    	public adstract void sayHello();
    	}	
  • 추상클래스는 객체를 생성할 수 없고 반드시 상속을 통해서 사용될수 있다.
    즉 추상 클래스는 다른 자식 클래스를 위한 '가이드라인'의 역할을 한다.

  • 공통기능과 설계제시를 모두 처리하기

    • 추상클래스는 생성자, 멤버변수, 일반메서드 등을 포함 할 수있다.

    • 즉, 공통기능과 가이드라인를 모두 정의하여 다른 클래스에게 상속된다.

      		public abstract class Hello{
      			private String msg;
      			public Hello(String msg){this.msg =msg;}
      			public abstract void sayHello();
      		}

2. 인터페이스

2-1. 추상클래스의 한계

  • 자바 클래스 간에 상속에서는 하나의 부모만 존재할수있기 때문에
    앞의 상황에서는 요구하는 다중 상속의 구현은 불가능하다.

2-2. interface란

  • 완벽한 추상화를 구현하기 위한 Java Class의 한 종류
  • 다중 상속이 가능하기 때문에 용도별로 세분화하여 필요한 요소만 상속할 수 있다.

2-3. 추상클래스 vs. 인터페이스

  • 추상클래스
    • 멤버변수, 생성자, 메서드, 추상메서드를 포함할수 있다.
    • 이 클래스를 상속받은 자식클래스는 다른클래스를
      상속 받을 수 없다.
    • 객체의 생성이 불가능하다
  • 인터페이스
    • 추상메서드만 포함할 수 있다.
    • 인터페이스는 다중 상속이 가능하다.
      (implements 키워드로 상속)
    • 객체의 생성이 불가능하다

2-4. 인터페이스 상속

  • 인터페이스 상속받는 클래스는 인터페이스내의 모든 메서드들를
    반드시 재정의하여야 한다.

2-5. 인터페이스 다중상속

  • 인터페이스는 콤마(,)로 연결하여 여러개를 동시에 상속받을 수 있다.

    	public class Monster implements Fights, Move{
    	....
    	}
  • 필요한 경우 다른 클래스와 동시에 상속받을 수 있다.

    	public class Monster extends User implements Fights, 	Move{
    	....
    	}
profile
Quantum Jump to class for java….

0개의 댓글