자바 클래스 예제

Yuno·2025년 4월 28일
0

1️⃣ 클래스의 상속 (Inheritance)

  • 기존에 만들어진 클래스(부모 클래스)의 필드와 메서드를 그대로 물려받아 새로운 클래스(자식 클래스)를 만드는 것
  • 클래스의 중복을 피하고, 재사용성을 높여 프로그램 확장을 쉽게 함
// 부모 클래스
class 축구팀 {
    String 이름;
    String 성별;
    String 학과;
    int 학년;
    
    void 공차기() {}
    void 수비하기() {}
    void 공격하기() {}
}

// 자식 클래스
class 야구팀 extends 축구팀 {
	String 주민등록번호; // 추가된 필드
	
	void 공던지기() {} // 추가된 메서드
}
  • 자식 클래스는 부모 클래스의 모든 기능을 사용 가능
  • 자식 클래스는 추가적인 속성과 메서드를 넣어서 확장 가능

2️⃣ 캡슐화 (Encapsulation)

  • 객체 내부의 데이터를 보호하기 위해 데이터를 외부로부터 숨기고, 접근 가능한 메서드만 공개하는 것
  • 접근 제어자 사용
    • private : 외부 접근 불가 (숨겨진 데이터)
    • public : 외부 접근 가능 (공개된 메서드)

✨ 캡슐화의 장점

  • 객체 내부 데이터의 손상과 오용 방지
  • 데이터가 변경되어도 다른 객체에 영향을 주지 않음(독립성 유지)
  • 부품처럼 객체를 재사용 가능 (모듈화)
class 축구선수 {
	private String 이름; // 숨겨짐
	public void set이름(String 이름) {
		this.이름 = 이름; // 공개된 메서드로만 접근 가능
	}
}

3️⃣ 메세지(Message)

  • 객체 간의 통신 방법으로, 객체에게 특정 작업(메서드 실행) 을 요청하는 행위
  • 메세지의 구성요소
    • 수신 객체(메세지를 받을 객체)
    • 메서드 이름(실행할 메서드)
    • 매개 변수(메서드 실행 시 필요한 데이터)
유노.패스하다("홍길동");
  • 유노 라는 객체가 홍길동에게 공을 패스하도록 요청

4️⃣ 다형성(Polymorphism)

하나의 인터페이스로 다양한 구현을 제공

  • 같은 이름의 메서드가 다양한 형태로 동작하는 것
  • 실행될 때 실제 객체 타입에 따라 동적으로 메서드가 실행됨
class 스포츠 {
	void 공격하다() {} // 추상적인 메서드
}

class 축구 extends 스포츠 {
	void 공격하다() {/* 발로 공을 차는 공격 */}
}

class 농구 extends 농구 {
	void 공격하다() {/* 농구 골대에 공을 넣는 공격 */}
}

// 메서드 호출
스포츠 player;
player = new 축구();
player.공격하다(); // 축구의 공격 메서드 실행

player = new 농구();
player.공격하다(); // 농구의 공격 메서드 실행

5️⃣ 자바 프로그램의 기본 흐름

  • 클래스 선언 예시
// 클래스 선언
public class 축구팀 {
	// 필드(데이터)
	String 이름;
	int 등번호;
	String 포지션;
	
	// 메서드(행동)
	void 패스하기() {
		System.out.println(이름 + " 선수가 공을 전달했습니다.");
	}
}
  • 객체 생성 및 사용 예시
public class 축구팀만들기 {
	public static void main(String[] args) {
		축구팀 선수_01 = new 축구팀();
		선수_01.이름 = "유노";
		선수_01.등번호 = 10;
		선수_01.포지션 = "미드필더";
		
		// 객체의 필드 출력
		System.out.println(선수_01.이름 + " 의 등번호는 " + 선수_01.등번호 + "번 입니다.");
		
		// 객체의 메서드 호출
		선수_01.패스하기();
	}
}
profile
Hello World

0개의 댓글