JAVA_ abstract, ArrayList

장성욱·2025년 6월 18일

JAVA

목록 보기
14/23

abstract, 생성자 활용 클래스

class Main {
  public static void main(String[] args) {
    사람 a김철수 = new 김철수();	// 사람타입 김철수 생성
    사람 a김영희 = new 김영희();	// 사람타입 김영희 생성

    a김철수.배달_음식_주문하다();
   
    a김영희.배달_음식_주문하다();

    a김영희.a좋아하는_음식점 = a김철수.a좋아하는_음식점;
    a김영희.선호하는_음식의_매운정도 = "아주 매운";
    a김영희.선호하는_음식 = "짜장";

    a김영희.배달_음식_주문하다();
  }
}
class 사람 {
  String 이름;
  String 번호;
  String 선호하는_음식의_매운정도;
  String 선호하는_음식;
  음식점 a좋아하는_음식점;

  void 배달_음식_주문하다() {
    a좋아하는_음식점.주문(이름, 번호, 선호하는_음식의_매운정도, 선호하는_음식);
  }
}
class 김철수 extends 사람 {	// 사람클래스 상속
  김철수() {	// 생성자 생성
    이름 = "김철수";
    번호 = "010-1234-1234";
    선호하는_음식의_매운정도 = "매운";
    선호하는_음식 = "짬뽕";
    a좋아하는_음식점 = new 영화반점();

  }
}
class 김영희 extends 사람 {	// 사람클래스 상속
  김영희() {	// 생성자 생성
    이름 = "김영희";
    번호 = "010-4321-4321";
    선호하는_음식의_매운정도 = "안매운";
    선호하는_음식 = "짬뽕";
    a좋아하는_음식점 = new 북경반점();
  }
}
abstract class 음식점 {	// 추상화클래스 음식점
  String 식당이름;	// 자식클래스에 넘겨줌
  void 주문(String 주문자명, String 번호, String 매운정도, String 음식) {
    System.out.println(식당이름 + "에서 " + 주문자명 + "(" + 번호 + ")에게 " + 매운정도 + " " + 음식 + "(을)를 배달합니다." );
  }
}
class 북경반점 extends 음식점{
  북경반점() {	// 생성자 생성
    식당이름 = "북경반점";	// 부모클래스에서 물려받은 속성
  }
}
class 영화반점 extends 음식점 {
  영화반점() {
    식당이름 = "영화반점";
  }
}

추상클래스(abstract)

  • 클래스 간의 구조설계

  • 하나 이상의 추상메서드를 포함하는 클래스

  • 추상메서드가 없어도 오류는 없음

  • 클래스 내에서 구상 메서드 사용도 가능

  • 추상메서드를 상속받은 자식클래스는 무조건 오버라이딩(재정의)를 해야함

- 추상메서드

abstract void run();

{} 몸통없이 바로 ;로 마무리
구조만 만들어두고 내용은 자식클래스에서 정의

ArrayList

import java.util.ArrayList;

class Main{
  public static void main (String[] args) {
  
  	// 배열
    String [] names = new String[2];
    names[0] = "철수";
    names[1] = "영희";
    for (int i = 0; i < names.length; i ++) {
      System.out.println(names[i]);
    }
    
	// ArrayList
    ArrayList<String> name = new ArrayList<>();
    name.add("철수");
    name.add("영희");
    for(int i = 0; i < name.size(); i ++) {
      System.out.println(name.get(i));
    }
  }
}

- ArrayList의 길이 출력은 size()
- 출력 시에는 get(index)
profile
https://frost-puck-b0f.notion.site/B-2610fdaef71d80c49d1bccdcb575dcb5

0개의 댓글