풀스택 자바 - 20240805

김진아·2024년 8월 5일

추상 클래스&추상 메소드


  • 구체적이지 않은 것
  • ex) 독수리, 타조는 구체적인 새를 지칭, 그러나 새, 포유류 같은 단어는 구체적이지않다.

추상 클래스

  • 클래스 앞에 abstract 키워드를 이용해서 정의
  • 미완성의 추상 메소드를 포함할 수 있다.
  • 추상 클래스는 인스턴스를 생성할 수 없다.
  • 순수 리모컨처럼 쓰이는 클래스를 위한 것

추상 메소드

  • 내용이 없는 메소드, 즉 구현이 되지 않은 메소드
  • 리턴 타입 앞에 abstract라는 키워드를 붙인다.
  • 메소드의 구현을 제공하지 않고, 자식 클래스에서 반드시 구현하도록 강제한다.
  • 추상 클래스를 상속받고, 추상 메소드를 구현하지 않으면 상속받은 자손 클래스도 추상 클래스가 된다.
  • 추상 메소드는 주로 추상 클래스나 인터페이스에서 사용된다.

예시

public class HelloWorld {

	public static void main(String[] args) {
		모양 d = () new();
		d.그리다();   // 출력: "그림을 그린다"
	}

}

 abstract class 모양 {
    // 추상 메소드
    abstract void 그리다();
}

classextends 모양 {
    // 오버라이드
    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+", 전사로 생성되었습니다.");
    }
}

profile
https://develop-chick.tistory.com/ 첫번째 블로그

0개의 댓글