티스토리 뷰

두개는 서로 밀접하지만 약간 다름


abstract 클래스는 일반적인 메소드와 다를바없음 


앱스트랙트이기때문에 앱스트랙트 메소드를 하위클래스가 상속받아서 사용하도록 강제한다.


앱스트랙스 메소드는 하위클래스에서 오버라이딩 하도록 기대하는 비어있는 내용의 앱스트랙트 메소드가 있지만

동시에 실제 구체적인 로직을 가지고있는 메소드나 필드가 존재할수있는것이 앱스트랙스 클래스이다.


◆하나 이상의 추상 method 를 포함하고 있는 클래스 
◆추상 메소드 + 일반 메스도 생 성 불 가 . 
    ---> "상속"받은 후 추상메소드를 "정의"한 후에 생성이 가능해진다.
◆혼자서는 생성이 불가능 하나, 상속받음으로써 생성이 가능해 진다.  

Main Class
public class mainClass { public static void main(String[] args) { /* abstract : 추상 완성품(완전체) 는 아닌 선언만 되어 있는 클래스. == 추상 클래스 하나 이상의 추상 method 를 포함하고 있는 클래스 추상 메소드 + 일반 메스도 생 성 불 가 . ---> "상속"받은 후 추상메소드를 "정의"한 후에 생성이 가능해진다. */ //AbstractClass ac = new AbstractClass(); // (); 생성불가. //혼자서는 생성이 불가능 하나, 상속받음으로써 생성이 가능해 진다. myClass cls = new myClass(); cls.abMethod(); cls.method(); AbstractClass ac = new myClass(); ac.abMethod(); ac.method(); } }
Parent Class
public abstract class AbstractClass { private int number; //추상메소드 abstract public void abMethod(); public void method() { System.out.println("일반 메소드 입니다."); } }
Child Class
public class myClass extends AbstractClass { @Override //주석. 네임 스페이스? 이름공간?? public void abMethod() { System.out.println("MyClass의 abMethod()다."); } }


ex)

class hi extends a  //abstract클래스는 상속처럼 extends를 쓴다

{

...

}



인터페이스는 클래스가 아니다.


구체적인 로직을 가지고있는 메소드를 인터페이스에 포함시키면 안됨

본체가 없는 메소드를 포함시키고 임플리먼트로 구현해야한다.

한개의 클래스에 여러 개를 사용할 수 있다.

'Java' 카테고리의 다른 글

Exception을 직접 발생시키는 방법  (0) 2018.08.28
예외처리 finally  (0) 2018.08.21
JAVA - 다형성 (polymorphism)  (0) 2018.08.17
자바 인터페이스(interface)  (0) 2018.08.17
abstract추상화  (1) 2018.08.17