[JAVA] Keep writing...

Y_Y·2022년 8월 4일
0

JAVA

목록 보기
1/3

JAVA는 객체지향언어이다.
1. 코드의 재사용성이 높다.
2. 코드의 관리가 용이하다.
3. 신뢰성이 높은 프로그래밍을 가능하게 한다.

객체와 인스턴스

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하고, 만들어진 객체를 그 클래스의 인스턴스(Instance)라고 한다.
ex) 책상은 인스턴스다. -> 책상은 객체이다.
책상은 책상 클래스의 객체이다. -> 책상은 책상 클래스의 인스턴스다.

클래스

클래스란 '객체를 정의해놓은 것.' 또는 클래스는 '객체의 설계도 또는 틀'이라고 정의할 수 있다.
사물의 속성과 기능을 파악하여 작성해야한다.
속성은 변수, 기능은 메서드.

변수

  • 변수의 선언된 위치에 따라 정의한다.

멤버변수 (class 영역에서 선언)

  • 클래스 변수 (static o) 클래스가 메모리에 올라갔을 때 생성
  • 인스턴스 변수 (static x) 인스턴스가 생성되었을 때 생성

지역 변수 (class 이외의 영역에서 선언) 변수 선언문이 수행되었을 때 생성

  1. 클래스 변수

변수 앞에 static을 붙여서 클래스 변수로 생성 가능하다.
클래스 변수는 객체생성 없이 클래스이름.클래스변수로 직접 사용이 가능하다.
클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다.
(속성의)공통적인 값.

  1. 인스턴스 변수

인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있따. 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언한다.

  1. 지역 변수

메서드, for while {} 블럭 내에서 생성되는 지역 변수는 종료되거나, 벗어나면 소멸한다.
Example) 트럼프카드

코드 보기
class CardTest {
	System.out.printf("width : %d, height : %d",Card.width, Card.height);
    // 클래스변수는 클래스.클래스변수 사용 가능
    Card c1 = new Card();
    c1.kind = "Heart";
    c1.number = 9;
    
    Card c2 = new Card();
    c2.kind = "Spade";
    c2.number = 2;
    
    c1.kind = "Spade"; // 인스턴스 변수의 값 변경
    c1.number = 4;
    
    c1.width = 120; // 클래스 변수의 값 변경
    c1.height = 240; // = c2.width = 120, c2.height = 240
    
}
class Card { // 클래스 영역
	String kind; // 인스턴스 변수
    int number;
    
    static int width = 100; // 클래스 변수
    static int height = 200;
}

메서드

Method - 기능에 해당한다. 특정 작업을 수행하는 일련의 문장들을 하나로 묶은것.
#높은 재사용성, #중복된 코드 제거, #프로그램의 구조화

반환타입 메서드이름 (타입 변수명,){
	// 메서드 호출시 수행될 코드
}

반환 타입이 void 형이 아닐 경우 구현부{} 안에 return 반환값; 이 포함되어야 한다.

반환값의 경우 반환타입과 같은 타입이거나 자동 형변환이 가능한 것이야 한다.

인자(argument)와 매개변수(parameter)

메서드를 호출할 때 괄호()안에 지정해 둔 값들을 '인자' 또는 '인수'라고 부른다. 인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 한다.
인자 = 원본, 매개변수 = 복사본

int resultAdd = add(3,5); // 3, 5는 인자
public int add(int x, int y) { // x, y는 매개변수
	int result = x + y;
	System.out.println(result);
}

Ref : 자바의 정석 3rd Edition 남궁 성 지음

profile
남을 위해(나를 위해) 글을 쓰는 Velog

0개의 댓글