- abstract 라는 키워드를 가진 클래스는 추상클래스,
abstract 라는 키워드를 가진 메소드는 추상메소드라고 부른다.
- public abstract class userName {} => 추상클래스
- public abstract void Test() ; => {} 없이 선언되는 메소드는 추상 메소드
- 추상클래스는 객체 생성이 불가능하다
- 추상클래스는 객체의 주소번지는 받을 수 있다
- 강제상속, 강제재정의의 목적을 가진다
--> 후손 클래스에서 공통적으로 구현하는 메소드는 구현하고, 후손 클래스마다 각각 다르게 구현해야 하는 메소드는 추상 클래스로 남겨둠
- 추상클래스를 상속받는 클래스는 추상 클래스가 선언한 추상 메소드를 반드시 재정의해야한다
--> 추상 메소드의 구현에 대한 책임을 후손 클래스에 위임하겠다는 의미
- 만일 재정의 하지 않으면 상속받은 클래스는 추상클래스가 된다
ex ) 추상클래스 Animal을 상속받은 Dog 와 Cat 클래스 구현
public abstract class Animal {
public abstract void sound();
public abstract void move();
public void eat() {
System.out.println("밥을 먹는다");
}
public void sleep() {
System.out.println("잠을 잔다");
}
public class Dog extends Animal {
@Override
public void move() {
System.out.println("살금살금 걷는다");
}
@Override
public void sound() {
System.out.println("야옹 운다");
}
}
public class Cat extends Animal {
@Override
public void move() {
System.out.println("꼬리를 흔든다");
}
@Override
public void sound() {
System.out.println("멍멍 짖는다");
}
}
public class Test {
public static void main(String[] args) {
Animal a1 = new Dog();
Animal a2 = new Cat();
System.out.println("잠잘때");
a1.sleep();
a2.sleep();
System.out.println("밥먹을때");
a1.eat();
a2.eat();
System.out.println("움직일때");
a1.move();
a2.move();
System.out.println("울때");
a1.sound();
a2.sound();
}
}
잠잘때
잠을 잔다
잠을 잔다
밥먹을때
밥을 먹는다
밥을 먹는다
움직일때
살금살금 걷는다
꼬리를 흔든다
울때
야옹 운다
멍멍 짖는다
'JAVA' 카테고리의 다른 글
Java 배열 (0) | 2021.08.12 |
---|---|
Java 인터페이스 (0) | 2021.08.10 |
Java class 03 - 상속 (0) | 2021.08.05 |
JAVA 접근제한자 및 getter & setter (0) | 2021.08.04 |
JAVA class 02 - 생성자 (0) | 2021.08.03 |