[Java] 추상 클래스 - Abstract / 인터페이스 - Interface

원준·2023년 7월 12일
0

Java

목록 보기
16/19

추상 클래스 / 인터페이스 ?

  • 추상 클래스와 인터페이스는 동일한 역할을 한다고 생각하면 편하다.
  • 쉽게 생각하면, 상속을 주는 부모의 역할에 작성하는 경우가 많고, 아직 개발이 되지 않은 메서드(선언만 해놓고 구현은 아직 안된)를 작성해 놓고 상속을 받는 클래스에서 강제로 만들도록 안내한다 라고 생각하면 좋을거 같다.

추상 클래스 - Abstract

  • 추상 클래스는 상속의 기본개념으로 부모가 1개만 존재 할 수 있다.
  1. 부모 추상 클래스 작성

    public abstract class GrandParsen {
    		// 추상클래스
    		// 메소드의 이름만 있고, 내용을 아직 정해지지 않은 메소드가 존재한다.
    	
    		String name;
    		int age;
    	
    	
    		//상속 받아서, 해당 함수 이름을 이용해 오버라이딩해라.
    		// 함수이름을 처음부터 정해서 작성하라는 안내 와 같다.
    		public abstract void print();
    
     }
  2. 자식 클래스 상속 받아서 추상클래스(추상화) 메서드를 작성한다.

	public class Parent extends GrandParsen {
	
      String job;


      // abstract 추상화 한 클래스가 존재하는 부모를 상속하면,
      // 메소드를 아직 구현하지 않은 부분에 대해 에러가 난	
      @Override
      public void print() {
          // TODO Auto-generated method stub
          System.out.println(name);
          System.out.println(age);
          System.out.println(job);
      }

      public String getJob() {
          return job;
      }

      public void setJob(String job) {
          this.job = job;
      }
  }

인터페이스 - Interface

  • 인터페이스의 차별점은 부모가 여러개 존재할 수 있게 사용 할 수 있다는 장점이 있다. (다중 상속 가능)
  • 주로 프레임워크 개발자가 많이 사용하는 방법이라고 한다.
  1. 부모의 인터페이스를 2개 이상 만들어 보자.
// 인터페이스는 추상클래스와 비슷하지만,
// 여러개를 동시에 상속받아서 사용할 수 있다.
// 프레임 워크 개발자들은 인터페이스를 만들어 놓는다.n
public interface Card {
	// 상수와 추상 메소드로 구성. -> 상속과 다를게 없지만, 다중 상속이 가능하다는 차이점이 있다.
	// 상수란, 변수에 한번 데이터를 저장한 후, 값을 바꿀수 없는 변수
	
	static final int CLOVER = 1;
	static final int HEART = 2;
	static final int DIAMOND = 3;
	static final int SPADE = 4;
	
	//아래 함수를, 상속 받은 사람이, 이 함수 이름을 그대로 사용해서
	// 개발을 진행하면 된다.
	public void print();
	public String getCardNumber();
}
public interface Player {
	public void play(String name);
	
	public void end();
}
  1. 자식의 클래스에서 2개 인터페이스를 상속받아 메서드를 완성하자.
public class MyCard implements Card, Player {

	@Override
	public void play(String name) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void end() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void print() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public String getCardNumber() {
		// TODO Auto-generated method stub
		return null;
	}
	
}
profile
공부해보자

0개의 댓글

관련 채용 정보