ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (JAVA) 자바 인터페이스(Interface)
    JAVA/컨셉 , 예제 2018. 8. 24. 13:54

    추상클래스의 특징에 대해 정리하면

    1. 추상 메소드가 포함되어 있다. (abstract 키워드 사용)
    2. 객체를 생성할 수 없다. (추상 메소드가 있기 때문)
    3. 다른 클래스에서 상속받아 사용한다. (extends 키워드 사용)

    인터페이스(Interface)는 추상메소드만으로 이루어진 추상 클래스라고 이해하면 편하겠다. 추상클래스와의 대표적 차이점은

    1. 인터페이스를 구현하는 메소드가 모두 추상 메소드이다. 추상클래스는 추상메소드와 구현된 메소드 모두 있어도 무방.
    2. 추상 클래스는 extends , 인터페이스는 inplements로 기능 상속. 
    3. 추상클래스는 하나의 클래스만 상속가능, 인터페이스는 다중 상속 가능.

    자바의 특징 중 하나인 다형성을 더 효과적으로 제공하기 위해 등장.

    package blog.naver.com; public interface Computer { public /*abstract*/ void input(); public void compute(); public void store(); // 저장소 }

    컴퓨터 인터페이스. 컴퓨터의 속성들 가지고 있다. 인터페이스의 모든 메소드는 추상메소드여야 하는것이 룰이다. 메소드 앞에 abstract 키워드가 있어야 하지만 번거롭기 때문에 생략해도 되도록 지원한다.

    package blog.naver.com; public interface FaceTime extends Computer{ public void faceTime(); }

    컴퓨터의 기능을 상속받은 FaceTime 메소드. Computer 인터페이스의 메소드들과 더불어 애플 컴퓨터의 고유한 기술인 FaceTime을 추가해 가지고 있다.

    package blog.naver.com; public class LgComputer implements Computer{ @Override public void input() { // TODO Auto-generated method stub System.out.println("LG input"); } @Override public void compute() { // TODO Auto-generated method stub System.out.println("LG compute"); } @Override public void store() { // TODO Auto-generated method stub System.out.println("LG store"); } }

    LG 컴퓨터

    package blog.naver.com; public class SamsungComputer implements Computer{ @Override public void input() { // 선언만 되어 있던 메소드 처음 정의(인터페이스, 상속) // TODO Auto-generated method stub System.out.println("삼성 input"); } @Override public void compute() { // TODO Auto-generated method stub System.out.println("삼성 cpu"); } @Override public void store() { // TODO Auto-generated method stub System.out.println("삼성 SSD"); } }

    삼성 컴퓨터

    package blog.naver.com; public class AppleComputer implements FaceTime{ @Override public void input() { // TODO Auto-generated method stub System.out.println("Mac 키보드"); } @Override public void compute() { // TODO Auto-generated method stub System.out.println("Apple CPU"); } @Override public void store() { // TODO Auto-generated method stub System.out.println("삼성 SSD 사용하는 애플"); } @Override public void faceTime(){ System.out.println("Facetime"); } }

    애플 컴퓨터. FaceTime을 implements 해 faceTime 기능도 상속받음.

    package blog.naver.com.pccafe; import blog.naver.com.AppleComputer; import blog.naver.com.Computer; import blog.naver.com.LgComputer; import blog.naver.com.SamsungComputer; public class PCCafe { public static void main(String[] args) { Computer[] computers = new Computer[3]; computers[0] = new LgComputer(); computers[1] = new SamsungComputer(); computers[2] = new AppleComputer(); for(Computer computer : computers){ computer.input(); computer.compute(); computer.store(); if(computer instanceof AppleComputer){ ((AppleComputer) computer).faceTime(); } } } }

    instanceof 연산자를 이용해 Computer 객체가 상속받은 클래스를 확인하고 AppleComputer인 경우 faceTime 메소드 수행. instanceof는 조상 객체를 찾는 메소드 정도로 이해한 상태이다.


Designed by Tistory.