본문 바로가기
카테고리 없음

자바) 인터페이스와 추상클래스

by 흥뷰자 2023. 2. 23.

인터페이스

 

구현해야함. 작업명세서임. 구체적이 내용없음 (추상메서드) @Override
인스턴스를 만들 수 없음
여러개를 임플할 수 있음 
구현한 클래스로 객체를 생성하면 구현 강제한 해당 인터페이스 타입 내의 멤버에만 접근할 수 있음
타입은 해당 구현클래스, 임플한 인터페이스로도 지정 가능(데이터타입의 확장)

장난감인터페이스 <--- 로봇, 비행기가 구현 클래스

장난감 타입의 배열 = {로봇타입, 비행기타입};
배열 돌면서 
장난감[i].walk();
장난감[i].run();
장난감[i].alarm();
장난감[i].light();

각자 구현한 로직으로 처리가 됨



추상클래스 


클래스 + 인터페이스의 추상메서드 포함
클래스처럼 멤버변수 있고, 일반메서드도 가지고, 생성자도 있음, 추상클래스는 extends로 상속 
추상메서드가 상속클래스가 구현해야함 @Override

구현 클래스가 생성자 호출 하면서 구현 클래스는 super로 추상클래스의 생성자를 호출할 수 있고 상위 추상클래스의 멤버변수값도 초기화해서 
상위 클래스 (추상클래스) 타입으로 지정하면 추상클래스의 멤버메서드도 사용할 수 있고, 상속 받아 구현한 내부 메서드도 사용할 수 잇음

공통부분을 추상클래스로 구현하고 상세 부분 개별적으로 구현해서 다양한 데이터타입 가지도록 다형성 실현

 


정리 

공통은 추상메서드, 객체 생성 안하고 자료형(타입)으로 사용된다는 점.
차이는 인터페이스는 상수, 추상메서드만 갖고 추상클래스는 클래스의 속성 기능도 갖는다.
인터페이스는 추상메서드 구현만 하지만 추상클래스는 구현 및 상속 기능도 갖는다.
인터페이스는 다형성 지원하고(여러개 임플) 추상클래스는 단일상속만 지원한다.



댓글