자기 개발/Java
추상클래스와 인터페이스 차이
SeungHwa
2013. 9. 5. 13:22
추상 클래스 와 인터페이스 의 차이점_1
추상클래스(abstract)
상속 키워드 : extends
1. abstract 와 final 은 동시에 선언될수 없다.
(abstract는 반드시 자손을 통해 구현되야할 메소드 인데 final 같은 경우를 선언문에 포함시키면 오버라이딩 될수 없다. )
2. 추상클래스는 일반변수, 와 일반 메소드 를 가질 수 있다.
3.추상클래스는 생성자를 가질수 있다.
4.추상클래스는 인스턴스를 만들수 없지만 추상클래스를 상속받은 클래스를 통하면 인스턴스화가 가능하다. 예를 들자면 " 추상클래스명 ab = new 자손클래스명( )"
인터페이스(interface)
상속 키워드 : implements
1. 인터페이스안의 모든 메소드들은 추상메소드이다.
2. 인터페이스 변수들은 static이어야만 한다
(인터페이스에서 멤버 변수는 디폴트로 public final static 이고, 멤버 메소드는 public abstract
)
3.인터페이스는 생성자를 가질수 없다.
4.인터페이스는 인스턴스를 만들수 없지만 인터페이스를 구현한 클래스를 통하면 인스턴스화가 가능하다. 예를 들자면 "인터페이스명 ab = new 클래스명( )"
5. abstract 생략 가능 하지만 빠른 가독성을 위해 생략가능한 부호는 언제나 쓰는 습관 필요
6.다중상속이 가능하다.
(class Triangle implements Shape, 인터페이스이름, 인터페이스이름)
7.접근지정자를 public 와 디폴트 만 가능
추상클래스는 "일반변수(가능)+일반메소드(가능)+추상메소드" 형태이고 ,
인터페이스는 "상수+추상메소드"만 가능하고 일반변수나 일반메소드를 쓰는 것은 불가능하다
인터페이스는 한눈에 보면 다 빈껍데기 뿐이기 때문에 어떤 것을 구현해야되는지 한눈에 몽땅 들어오므로 쓰는 빈도가 높고 ,
추상클래스는 필요에 의해서 일반 메소드와 더불어서 추상화 기능을 가미할때 쓴다.
추상클래스(abstract)
상속 키워드 : extends
1. abstract 와 final 은 동시에 선언될수 없다.
(abstract는 반드시 자손을 통해 구현되야할 메소드 인데 final 같은 경우를 선언문에 포함시키면 오버라이딩 될수 없다. )
2. 추상클래스는 일반변수, 와 일반 메소드 를 가질 수 있다.
3.추상클래스는 생성자를 가질수 있다.
4.추상클래스는 인스턴스를 만들수 없지만 추상클래스를 상속받은 클래스를 통하면 인스턴스화가 가능하다. 예를 들자면 " 추상클래스명 ab = new 자손클래스명( )"
인터페이스(interface)
상속 키워드 : implements
1. 인터페이스안의 모든 메소드들은 추상메소드이다.
2. 인터페이스 변수들은 static이어야만 한다
(인터페이스에서 멤버 변수는 디폴트로 public final static 이고, 멤버 메소드는 public abstract
)
3.인터페이스는 생성자를 가질수 없다.
4.인터페이스는 인스턴스를 만들수 없지만 인터페이스를 구현한 클래스를 통하면 인스턴스화가 가능하다. 예를 들자면 "인터페이스명 ab = new 클래스명( )"
5. abstract 생략 가능 하지만 빠른 가독성을 위해 생략가능한 부호는 언제나 쓰는 습관 필요
6.다중상속이 가능하다.
(class Triangle implements Shape, 인터페이스이름, 인터페이스이름)
7.접근지정자를 public 와 디폴트 만 가능
추상클래스는 "일반변수(가능)+일반메소드(가능)+추상메소드" 형태이고 ,
인터페이스는 "상수+추상메소드"만 가능하고 일반변수나 일반메소드를 쓰는 것은 불가능하다
인터페이스는 한눈에 보면 다 빈껍데기 뿐이기 때문에 어떤 것을 구현해야되는지 한눈에 몽땅 들어오므로 쓰는 빈도가 높고 ,
추상클래스는 필요에 의해서 일반 메소드와 더불어서 추상화 기능을 가미할때 쓴다.