본문 바로가기

JAVA

Java class 04 - 추상클래스

- 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