[JAVA] 객체지향이론3

Posted by 신희준 on August 24, 2017


2017 - 08 - 24 (목)

  • 추상클래스
  • 인터페이스

  • 참고 도서 : 자바의 정석(남궁성 저, 도우출판)


    1 . 추상클래스


    - 클래스가 설계도라면 추상클래스는 미완성 설계도 같은 것이다.

    - 추상 클래스는 추상 메서드를 포함하고 있다.

    - 인스턴스를 생성할 수 없다.

    - 기존클래스의 공통 부분을 뽑아서 추상 클래스를 만든다.



    2 . 인터페이스


    - 일종의 추상클래스 같은 것이다.

    - 실제로 구현된 것은 없고 그냥 껍데기 같은 것이다. (추상화의 정도가 더 크다.)

    - 인스턴스를 생성할 수 없다.

    - implements 인터페이스명 으로 쓰이며 여러개의 인터페이스를 상속받을 수 있다.

    public interface Able {
    	 void bark();
    	 void run();
    	 void sleep();  // 인터페이스에서는 추상적인 껍데기만 만들어준다.
    
    } //able 인터페이스
    
    
    public class Cat implements Able{
    	@Override
    	public void bark() {
    		System.out.println("냐옹");
    	}
    	@Override
    	public void run() {
        System.out.println("냥냥뛴다.");
    	}
    	@Override
    	public void sleep() {
        System.out.println("냥냥잔다");
    	} //Able 인터페이스를 상속받고 오버라이딩 하여 각각 메소드를 재정의해줘야함.
    }
    
    public class Dog implements Able{
    	@Override
    	public void bark() {
    		// TODO Auto-generated method stub
    		System.out.println("멍멍");
    	}
    	@Override
    	public void run() {
    		System.out.println("멍멍뛴다");
    	}
    	@Override
    	public void sleep() {
    		System.out.println("멍멍잔다");
    	}	//Able 인터페이스를 상속받고 오버라이딩 하여 각각 메소드를 재정의해줘야함.
    }
    
    public class Test {
    	public static void main(String[] args) {
    		Dog d = new Dog();
    		Cat c = new Cat();
    		d.bark();  // 멍멍
    		c.bark(); // 냐옹
    	}  
    } // 같은 bark() 메소드지만 결과가 다르다. Dog, Cat 클래스에서 각각 인터페이스를 상속받아 오버라이딩하여 메소드를 각자에 맞게 재정의하였다. 이와 같이 인터페이스를 활용한다.
    
    // >> 다형성을 볼 수 있는 예제이다.
    


    - 메서드를 재정의하는 쪽에서는 선언부만 알면된다. 그러므로 양방향 개발이 가능하게되어 개발시간이 단축된다.

    - 인터페이스 활용의 이점은 분업을 효율적으로 할 수 있게 해준다는 것이다. (독립적인 프로그래밍 가능)

    - 인터페이스를 사용하면 클래스간의 결합도를 떨어 뜨릴 수 있다. (디자인 패턴)