JAVA_ CLASS 상속 생성자 복습

장성욱·2025년 6월 9일

JAVA

목록 보기
10/23

상속, 오버라이딩(재정의)

class Main {
  public static void main (String[] args) {
    무기 무기1 = new 무기();
        무기1. 공격();

    칼 칼1 = new();1. 공격();

    창 창1 = new();1. 공격();

    활 활1 = new();1. 공격();
  }
}

class 무기 {
  void 공격() {
  }
}

classextends 무기{
  @Override
  void 공격() {
    System.out.println("칼로 공격합니다.");
  }
}

classextends 무기 {
  @Override
  void 공격() {
    System.out.println("창으로 공격합니다.");
  }
}

classextends 무기 {
  @Override
  void 공격() {
    System.out.println("활로 공격합니다.");
  }
}

칼,창,활 클래스는 부모클래스인 무기에게 상속받은 자식클래스

상속받은 공격( ) 메서드를 자식클래스에서 재정의해서 사용

  • Main클래스에 배열과 반복문 사용하기

class Main {
  public static void main (String[] args) {
    무기 [] 무기들 = new 무기[3];  // 인덱스가 3개인 무기배열 생성

    무기들[0] = new();	// 칼객체 생성
    무기들[1] = new();	// 창객체 생성
    무기들[2] = new();	// 활객체 생성

    for(int i = 0; i <무기들.length; i++) {	// 0부터 무기배열의 길이-1까지 반복
      무기들[i].공격();						// 각 i번째 객체의 배열 메서드 실행
    }
  }
}
  • 심화

class Main {
  public static void main (String[] args) {
    요리사 [] 요리 = new 요리사[3];
    요리[0] = new 김치요리사();
    요리[1] = new 된장요리사();
    요리[2] = new 양식요리사();

    String[] 요리들 = {"김치찌개", "된장찌개", "파스타"};

    for (int i = 0; i < 요리.length; i ++) {
      요리[i].요리하다(요리들[i]);
    }
  }
}

class 요리사 {
  String 요리명;
  void 요리하다(String 요리명){
    System.out.println(요리명 + "을(를) 요리합니다.");
  }
}

class 김치요리사 extends 요리사 {
}

class 된장요리사 extends 요리사 {
}

class 양식요리사 extends 요리사 {

}
  • 심화2(조건문 활용)

class Main {
  public static void main(String[] args) {
    요리사 [] 요리 = new 요리사[3];
    요리[0] = new 김치요리사();
    요리[1] = new 된장요리사();
    요리[2] = new 양식요리사();

    요리[0].요리하다("파스타");

    String [] 요리들 = {"김치찌개", "된장찌개", "파스타"};


    for (int i = 0; i < 요리.length; i ++) {
      요리[i].요리하다(요리들[i]);
    }
  }
}
class 요리사 {
  String 요리명;
  void 요리하다(String 요리명) {
    System.out.println(요리명 + "을(를) 요리합니다.");
  }
}

class 김치요리사 extends 요리사 {
  @Override
  void 요리하다(String 요리명) {
    if (요리명.equals("김치찌개")) {
      System.out.println("김치찌개를 요리합니다.");
    } else {
      System.out.println("해당 요리는 못 합니다.");
    }
  }
}
class 된장요리사 extends 요리사 {
  @Override
  void 요리하다(String 요리명) {
    if (요리명.equals("된장찌개")) {
      System.out.println("된장찌개를 요리합니다.");
    } else {
      System.out.println("해당 요리는 못 합니다.");
    }
  }
}
class 양식요리사 extends 요리사 {
  @Override
  void 요리하다(String 요리명) {
    if (요리명.equals("파스타")) {
      System.out.println("파스타를 요리합니다.");
    } else {
      System.out.println("해당 요리는 못 합니다.");
    }
  }
}

각 요리사들은 지정된 요리만 가능하며 못하는 요리가 오면 "해당 요리는 못 합니다"를
출력함

equals = 문자열이 같은지 비교할 때 사용되는 메서드임

if문에서 요리명.equals("파스타")는
입력한 요리명과 "파스타"가 같은지 비교해줌

equals (문자열 비교)

문법 : if(문자열1.equals(문자열2))

- 로그인 프로그램

class Main {
  public static void main(String[] args) {
    String input_id = "jswook0422";
    String input_pw = "123";

    String id = "jswook0422";
    String pw = "1234";
    
    if(input_id.equals(id) && input_pw.equals(pw)) {
    	System.out.println("로그인 성공);
    }
    
    else {
    	System.out.println("로그인 실패);
    }
   }
  }

생성자

  • 생성자 이름 = 클래스 이름
  • 매개변수의 조건에 따라 여러개 작성 가능 (오버로딩)
  • 반환타입 사용 x (ex. void, int 등)
  • 객체가 생성될 때 자동으로 한 번만 호출
    
    class Main {
    public static void main(String[] args) {
      car a = new car("포르쉐");
      car b = new car("테슬라");
    }
    }
    class car {
    String name;
    
    // 생성자 (매개변수)
    car(String name) {
      this.name = name;	// 좌측 name은 String name;, 우측 name은 매겨변수 String name
      System.out.println("이 자동차의 이름은 " + name + "입니다.");
    }
    }

### super (부모클래스 접촉)

- 부모클래스와 관련된 기능에 접촉할 때 사용
- 부모클래스 생성자 호출 : super(값)
- 부모클래스 메서드 호출 : super.메서드()

```java
class Main {
  public static void main(String[] args) {
    동물 [] a = new 동물[2];
    a[0] = new 개("바둑이");
    a[1] = new 고양이("냐옹이");

    for(int i = 0; i < a.length; i ++) {
      a[i].소리내기();
    }
  }
}
class 동물 {
  String name;
  동물(String name) {
    this.name = name;
  }
  void 소리내기() {
    }
  }


class 개 extends 동물 {
  개(String name) {
    super(name);		// 부모클래스의 생성자 호출
  }
  @Override
  void 소리내기() {
    System.out.println(name + "이(가) 멍멍 짖습니다.");
  }
}

class 고양이 extends 동물{
  고양이(String name) {
    super(name);		// 부모클래스의 생성자 호출
  }
  @Override
  void 소리내기 () {
    System.out.println(name + "이(가) 야옹 울어요.");
  }

}
profile
https://frost-puck-b0f.notion.site/B-2610fdaef71d80c49d1bccdcb575dcb5

0개의 댓글