abstract는 추상이라는 개념이다.
객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 추상 클래스는 클래스들의 공통적인 특성을 추출해서 선언한 클래스이다.
예를 들어서 생물의 특징을 적는 class들이 있다고하자.
Bird, Insect, Fish등이 있을 때 이들의 공통되는 필드와 메소드를 모아둔 것이 추상 클래스이다.
여기서는 Animal.class라고 하자
이때 Animal 클래스를 Bird, Insect, Fish들이 상속하게 된다.
Animal animal = new Animal();
추상 클래스인 Animal은 다음과 같이 new연산자를 사용해서 인스턴스를 생성할 수 없다.
- 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적으로 사용
- 실체 클래스를 작성할 때 시간을 절약
이런 용도로 사용한다고 보면 된다.
1. 추상 클래스 선언
public abstract class 클래스 {
public String owner;
public Phone(Stirng owner){
this.owner =owner;
}
public void turnOn(){
System.out.println("폰 전원을 켭니다.");
}
public void turnOff(){
System.out.println("폰 전원을 끕니다.")
}
}
abstract키워드를 붙여서 추상 클래스를 선언할 수 있다.
new연산자로 직접 생성자를 호출할 수 는 없지만 자식 객체가 생성될 때 super()를 통해서 추상 클래스 객체를 생성하긴 하기때문에 생성자가 있어야 한다.
2. 추상 클래스 사용
public class SmartPhone extends Phone{
public SmartPhone(String owner){
super(owner);
}
public void internetSearch(){
System.out.println("인터넷 검색을 합니다.");
}
}
다음은 추상 클래스인 Phone을 상속받아서 SmartPhone이라는 클래스를 만들었다.
이때 super(owner)를 사용해서 Phone의 생성자를 호출했다.
public class Main {
public static void main(String[] args) {
SmartPhone smartPhone = new SmartPhone("홍길동");
smartPhone.turnOn();
smartPhone.internetSearch();
smartPhone.turnOff();
System.out.println(smartPhone.owner);
}
}
이제 smartphone을 가지고 new생성자를 통해서 만들고 owner를 홍길동으로 넣어준다.
smartPhone에는 작성하지 않은 turnOne같은 메소드를 사용할 수 있고 자신의 메소드를 사용할 수 있드며 owner또한 상속받은 생성자가 잘 작동하는걸 볼 수 있다.
'JAVA > JAVA 기초' 카테고리의 다른 글
[Java/기초] Exceptions 총정리 (0) | 2024.07.07 |
---|---|
[Java/기초] 접근 제한자 (public, protected, default, private) (0) | 2024.04.12 |
[Java/기초] Overloading, Overriding (0) | 2024.03.04 |
[Java/기초] Static, Final (0) | 2024.03.04 |
[Java/기초] Getter Setter (0) | 2024.02.13 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간