추상 클래스&추상 메소드
- 구체적이지 않은 것
- ex) 독수리, 타조는 구체적인 새를 지칭, 그러나 새, 포유류 같은 단어는 구체적이지않다.
추상 클래스
- 클래스 앞에 abstract 키워드를 이용해서 정의
- 미완성의 추상 메소드를 포함할 수 있다.
- 추상 클래스는 인스턴스를 생성할 수 없다.
- 순수 리모컨처럼 쓰이는 클래스를 위한 것
추상 메소드
- 내용이 없는 메소드, 즉 구현이 되지 않은 메소드
- 리턴 타입 앞에 abstract라는 키워드를 붙인다.
- 메소드의 구현을 제공하지 않고, 자식 클래스에서 반드시 구현하도록 강제한다.
- 추상 클래스를 상속받고, 추상 메소드를 구현하지 않으면 상속받은 자손 클래스도 추상 클래스가 된다.
- 추상 메소드는 주로 추상 클래스나 인터페이스에서 사용된다.
예시
public class HelloWorld {
public static void main(String[] args) {
모양 d = (원) new 원();
d.그리다();
}
}
abstract class 모양 {
abstract void 그리다();
}
class 원 extends 모양 {
void 그리다() {
System.out.println("그림을 그린다");
}
}
생성자 함수
기본 특징 및 역할
- 생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할 때 자동 생성됨.
- 생성자는 리턴타입이 없음.
- 클래스명과 동일한 함수
- 생성자를 하나라도 개발자가 만들었다면 기본생성자는 자동으로 생성되지 않음.
- 객체가 될 때 실행되는 함수
- 객체가 될 때 필드를 초기화 하는 역할을 수행.
오버로딩
- 생성자도 메소드와 마찬가지로 여러개를 선언할 수 있다.
- 매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다.
예시
public class Main {
public static void main(String[] args) {
전사 man = new 전사();
전사 man2 = new 전사("철수");
}
}
class 전사 {
String name;
전사() {
System.out.println("실행");
}
전사(String name) {
this.name = name;
System.out.println(name+", 전사로 생성되었습니다.");
}
}