[Java 기초] 객체지향언어 - 클래스와 객체, 메소드

김재희·2023년 10월 12일
0
post-custom-banner

객체지향언어

객체지향언어 = 프로그래밍 언어 + 객체지향개념(규칙)

package 패키지명;
import 패키지명;

public	   static	  class		extends		implements {
접근제한자  지정예약어   클래스명   상위클래스	상위인터페이스 
								상속(extends 상위클래스) > 다형성 > 추상화 > 인터페이스
	멤버필드
	멤버메소드
	생성자
	중첩클래스
}

  • 코드의 재사용성 높음
  • 유지보수가 용이함
  • 중복 코드 제거 가능함
  • OOP(Object Oriented Programming) 핵심 개념 : 캡슐화, 상속, 추상화, 다형성

클래스와 객체, 메소드

  • 클래스
    : 같은 종류의 집단에 속하는 속성과 행위를 정의한 것이다. 간단히 말하면, 객체를 정의해 놓은 것, 객체를 만들기 위한 설계도

  • 객체
    : 클래스의 인스턴스이며, 이때 인스턴스란 실제로 메모리상에 할당된 것을 의미한다. 객체는 자신의 고유의 속성을 가지며 클래스에서 정의한 행위를 수행할 수 있다. 용도는 기능과 속성에 따라 다르다.

  • 객체의 구성요소

    객체 = 속성(변수) + 기능(메서드)

🔽 인스턴스는 특정 클래스로부터 생성된 객체(예시: TV객체)

Class TV {
	String color;	//색상
    boolean power;	//전원 상태
    int channel;	//채널
        
    void power()	   { power = !power; }
    void channelUp()   { channel++; }
    void channelDown() { channel--; }
}
  • 메소드
    : 클래스로부터 생성된 객체를 사용하는 방법이다. 객체에 내리는 명령이라고 할 수 있다.

🔶 객체의 생성과 사용

// 객체의 생성
클래스명 변수명;			// 클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명();	// 클래스의 객체 생성 후 객체의 주소를 참조변수에 저장

TV t;					// TV클래스 타입의 참조변수 t를 선언
t = new TV();			// TV인스턴스 생성 후 주소를 t에 저장

// 객체의 사용
t.channel = 7;
t.channelDown();
System.out.println("현재 채널은"+t.channel+"입니다.");

🔶 객체의 배열 (참조변수 배열)

// 참조변수 배열 예시
Tv[] tvArr = new Tv[3]; == Tv tv1, tv2, tv3;
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

🔶 클래스의 정의

변수 : 하나의 데이터를 저장할 수 있는 공간
배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간
구조체 : 서로 관련된 여러 데이터를 하나로 저장할 수 있는 공간
클래스 : 데이터와 함수의 결합(구조체+함수)

  • 사용자 정의 타입

🔽 관련된 값 묶을 수 있고, 코드가 덜 복잡하며, 유지보수에 용이함

// 비객체지향적인 코드
int hour = 12;
int minute = 34;
int second = 56;

// 객체지향적인 코드
Class Time {
	int hour, minute, second;
}
Time t = new Time();
t.hour = 12;
t.minute 34;
t.second = 56;

🔶 선언 위치에 따른 변수의 종류

Class Variables {
	int iv;			// 인스턴스 변수 (인스턴스가 생성 되었을 때 생성)
    static int cv 	// 클래스 변수 (클래스가 메모리에 올라갈 때 생성)
    void method() {
    	int lv = 0;	// 지역 변수 (변수 선언문이 수행 되었을 때 생성)
    }
}
  • 인스턴스 변수 (개별 속성)
  • 클래스 변수 (공통 속성) : 공유변수이며, 객체 생성 안해도 됨
  • 지역 변수

@ javajungsuk_basic>flash>MemberVar.exe 영상 참고 https://github.com/castello/javajungsuk_basic/tree/master/flash


🔶 메소드

  1. 문장들을 묶어 놓은 것
  2. 값을 받아서 처리하고, 결과를 반환
  3. 하나의 메소드는 한가지 기능만 수행
  • Method는 코드 중복 방지 및 관리 용이하고, 재사용 가능하며, 간결해서 이해하기 쉽다는 것이 장점이다.
// Method 예시
int add(int x, int y) {	// 선언부
	// 구현부
	int result = x + y;
    return result;
}
  • 메소드의 호출
// 메소드 이름(parameter 값1, 값2, ...); <= 메소드 호출 방법
print99danAll();		// void print99danAll() 호출
int result = add(3,5);	// add메소드를 호출하고 결과를 result에 저장 
  • return문
    : 실행중인 메소드를 종료하고 호출한 곳으로 되돌아간다.
void printGugudan(int dan) {
	if(!(2<=dan && dan<=9) return;
    for(int i=1; i<=9; i++) {
    	System.out.printf("%d * %d = %d\n", dan, i, dan*i);
    }
    return; // 반환타입이 void이므로 생략가능(컴파일러가 자동 추가)
}

참고

profile
소통하며 협업하는 신입 백엔드 개발자입니다.
post-custom-banner

0개의 댓글