추상이란 여러가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용
package abstracts;
// abstract 키워드가 명시된 클래스를 추상클래스 라고 한다.
// 추상클래스의 구성요소 : 일반클래스, 멤버들 + 추상메소드
// 일반 클래스의 구성요소 : 메소드 생성자 필드 내부클래스
public abstract class Animal {
String name;
int age;
void showInfo() {
System.out.println("이름 : " + name + ", 나이 : " + age);
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
// 추상메소드를 허용한다.
// 추상메소드는 {}없이 헤더만 선언된 메소드이다 : 미완성 메소드
public abstract void move();
}
abstract 키워드가 명시된 클래스를 추상 클래스 : 미완성된 클래스 추상 클래스의 구성 요소 : 실체 클래스 멤버들 + 추상 메소드(필수는 아님)
package abstracts;
// abstract 키워드가 명시된 클래스를 추상클래스 라고 한다.
// 추상클래스의 구성요소 : 일반클래스, 멤버들 + 추상메소드
// 일반 클래스의 구성요소 : 메소드 생성자 필드 내부클래스
public abstract class Animal {
String name;
int age;
void showInfo() {
System.out.println("이름 : " + name + ", 나이 : " + age);
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
// 추상메소드를 허용한다.
// 추상메소드는 {}없이 헤더만 선언된 메소드이다 : 미완성 메소드
public abstract void move();
public abstract void sound();
}
package abstracts;
// public abstract class Cat extends Animal{}
public class Cat extends Animal {
public Cat(String name, int age) {
super(name, age); // == Animal();
}
@Override
public void move() {
System.out.println(name + " 는 사뿐사뿐 걸어가요");
}
// 상속관계에서 부모의 메소드를 수정할 권한을 주는데
// Override라 한다.
@Override
public void sound() {
System.out.println("야옹~~야옹~~");
}
}