안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면
이 클래스들의 공통적인 특성을 추출해서 선언한 클래스.
추상 클래스와 실체 클래스는 상속 관계를 가지고 있다.
추상 클래스가 부모이고, 실체 클래스가 자식으로 구현되어 실체 클래스는
추상 클래스의 모든 특성을 물려받고 추가적인 특성을 가질 수 있습니다.
여기서 특성이란 필드와 메서드들을 말한다.
추상 클래스는 객체를 직접 생성해서 사용할 수 없습니다.
추상 클래스는 new 연산자를 사용해서 인스턴스를 생성할 수 없습니다.
Animal animal = new Animal(); (X)
용도
새로운 실체를 만들기 위해 부모 클래스로만 사용.
추상 클래스를 만드는 이유
1. 실체 클래스들의 공통된 필드와 메서드의 이름을 통일할 목적
2. 실체 클래스를 작성할 시간을 절약
선언
클래스 선언에 abstract 키워드를 붙여야 합니다.
abstract 를 붙이게 되면 new 연산자를 이용해서 객체를 만들지 못하고,
상속을 통해 자식 클래스만 만들 수 있습니다.
public abstract class 클래스{
//필드
//생성자
//메서드
}
추상 클래스도 일반 클래스와 마찬가지로 필드,생성자,메서드를 선언할 수 있습니다.
new 연선자로 직접 생성자를 호출할 수는 없지만,
super(...)로 호출해서 추상 클래스 객체를 생성하므로 추상 클래스도 생성자가 반드시 있어야 합니다.
예제
추상 클래스
public abstract class Tv {
//필드
public String owner;
//생성자
public Phone(String owner) {
this.owner = owner;
}
//메소드
public void turnOn() {
System.out.println("컴퓨터를 켭니다.");
}
public void turnOff() {
System.out.println("컴퓨터를 끕니다.");
}
}
실체 클래스
public class SmartPhone extends Tv {
//생성자
public SmartPhone(String owner) {
super(owner);
}
//메소드
public void internetSearch() {
System.out.println("인터넷 검색을 합니다.");
}
}
실행 클래스
public class PhoneExample {
public static void main(String[] args) {
//Tv tv = new Tv(); (x)
SmartPhone smartPhone = new SmartPhone("홍길동");
smartPhone.turnOn();
smartPhone.internetSearch();
smartPhone.turnOff();
}
}
'자바' 카테고리의 다른 글
JAVA 자바 인터페이스의 역할과 선언,상수 필드 선언 (0) | 2017.03.13 |
---|---|
JAVA 자바 추상 메서드와 오버라이딩 (0) | 2017.03.12 |
JAVA 자바 객체 타입 확인 ( instanceof) (0) | 2017.03.12 |
JAVA 자바 강제 타입 변환 ( Casting ) / 자바 강제 타입 변환 (0) | 2017.03.12 |
JAVA 자바 매개 변수의 다형성 (0) | 2017.03.12 |