Daily coding
Java Basic : day 11 - Abstract 추상 클래스 본문
Abstract 추상 클래스
class : 객체화에 대한 설계도, method의 내용이 모두 설정되어 있음
추상메소드 : 메소드가 정의만 되어있는 요소, 구체적인 로직은 없고 ( { }없음 ) 메소드의 정의만 되어있다.
추상클래스 : 추상 메소드를 한 개 이상 포함하고 있는 클래스
- 추상 클래스만은 생성이 불가능함
- 추상 클래스를 상속한 후에 자식 클래스에서 정의 후에 생성이 가능(오버라이딩)
- instance로 설정은 가능
아래는 메소드의 정의부가 없기 때문에 오류가 난다.
// AbstractClass a = new AbstractClass();
추상 클래스를 상속받은 일반 클래스 생성방법
MyClass cls = new MyClass();
추상클래스가 부모 메소드이기 때문에 아래와 같이 생성하는 것도 가능하다.
AbstractClass myCls = new MyClass();
아래와 같이 생성자 밑에 바로 정의를 해준다음 실행할 수도 있다.
AbstractClass aCls= new AbstractClass() {
@Override
public void abstractMethod() {
System.out.println("abstractMethod 상속 안하고 정의");
}
};
AbstractClass mCls = new MyClass();
AbstractClass mCls1 = new YouClass();
}
}
// 추상 클래스
abstract class AbstractClass {
private int number;
public void method() { // 일반 메소드
System.out.println("AbstractClass Method");
}
// 추상 메소드 선언방법 : abstract
public abstract void abstractMethod();
}
// 추상클래스를 상속받아 사용
// 상속 후에는 반드시 모든 추상메소드를 오버라이딩 해줘야 실행이 가능하다
// 추상 메소드 이외에도 다른 필드와 메소드를 추가할 수 있다.
class MyClass extends AbstractClass{
@Override
public void abstractMethod() {
System.out.println("Abstract Method() 호출");
}
public void MyClassMethod() {
System.out.println("MyClass Method 호출");
}
}
class YouClass extends AbstractClass{
@Override
public void abstractMethod() {
System.out.println("YouClass abstractMethod() 호출");
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 10 - LinkedList 링크드리스트 (0) | 2019.12.02 |
---|---|
Java Basic : day 11 - Interface 인터페이스 (0) | 2019.12.02 |
Java Basic : day 11 - Map ( HashMap, TreeMap ) (0) | 2019.12.02 |
Java Basic : day 10 - Example02: 학생성적관리 ArrayList로 작성 (0) | 2019.11.29 |
Java Basic : day 10 - Example01: 회원관리 ArrayList로 작성 (0) | 2019.11.29 |