JAVA 클래스에 대하여

박승현·2022년 3월 20일
0

JAVA

목록 보기
6/16

클래스란?

클래스는 객체를 만들기 위한 설계도로서, 클래스를 통해 객체를 정의 하고 생성한다.

인스턴스(Instance)

인스턴스는 클래스를 통해 만들어진 형태이다. 클래스가 객체의 설계도라면 설계도를 통해 실질적으로 만들어진 형태가 인스턴스 인 것이다. 그로므로 클래스를 통해 객체를 만드는 과정을 클래스의 인스턴스화라고 한다.

클래스의 사용

  • 클래스는 구현하고자 하는 객체의 속성(변수)과 기능(함수)들을 정의하는 설계도이다. 클래스는 변수와 메서드의 집합이라고 볼 수 있다.
class 클래스명 {
	/* 속성(변수) 작성*/
    /* 기능(메서드) 작성*/
}
  • 클래스로부터 인스턴스를 생성해야 변수와 메서드를 활용가능 하다.
클래스명 변수명; // 클래스의 객체를 참조할 수 있는 참조변수 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성하고 객체의 주소를 참조변수에 저장
클래스명 변수명 = new 클래스명(); // 한 번에 선언하는 경우

참조변수 : 변수라는 개념은 데이터를 저장하는 상자였다면 참조변수는 '데이터가 저장 되어 있는 주소'를 저장하는 특별한 변수이다. 연산자 new에 의해서 인스턴스가 메모리의 빈 공간에 생성되고 난 다음 대입 연산자 =에 의해서 인스턴스가 저장된 메모리의 주소 값이 참주변수에 저장된다. 인스턴스는 인스턴스의 주소 값이 저장된 참조변수로 다룰 수 있다.

변수에 접근할 경우 : 참조변수.변수명;
메서드를 실행시킬 경우 : 참조변수.메서드명();
// 인스턴스를 생성하고 다루는 코드
// 설계도가 있으므로 인스턴스를 원하는 개수만큼 생성가능하다.
class Car {
	boolean powerOn;
	String color;
	int wheel;
	int speed;
	boolean wiperOn;
	
	void power() {
		powerOn = !powerOn;
	}
	
	void speedUp() {
		speed++;
	}
	
	void speedDown() {
		speed--;
	}
	
	void wiper() {
		wiperOn = !wiperOn;
	}
}


public class Class_practice_2 {

	public static void main(String[] args) {
		Car mycar1 = new Car();
		Car mycar2 = new Car();
		mycar1.color = "red";
		mycar2.color = "black";
		mycar1.speedUp();
		mycar2.wiper();
		
		System.out.println("mycar1의 색 : "+mycar1.color);
		System.out.println("mycar2의 색 : "+mycar2.color);
		System.out.println("mycar1의 속도 : "+mycar1.speed);
		System.out.println("mycar2의 속도 : "+mycar2.speed);
		System.out.println("mycar1의 와이퍼 작동 여부 : " + mycar1.wiperOn);
		System.out.println("mycar2의 와이퍼 작동 여부 : " + mycar2.wiperOn);
	}

}
/*
출력값
mycar1의 색 : red
mycar2의 색 : black
mycar1의 속도 : 1
mycar2의 속도 : 0
mycar1의 와이퍼 작동 여부 : false
mycar2의 와이퍼 작동 여부 : true
*/

인스턴스변수와 클래스변수

인스턴스 변수

인스턴스 변수는 객체마다 가지는 고유한 변수이다. 인스턴스를 생성할 때 만들어지며 인스턴스마다 고유의 저장 공간을 가지므로 각각의 다른 값을 가질 수 있다. 다량의 인스턴스를 생성할 때 인스턴스마다 특별한 값을 가져야 할 경우 인스턴스 변수로 선언한다.

클래스 변수

클래스 변수는 클래스가 처음 메모리에 로딩될 때 생성된다. 그러므로 인스턴스를 생성 해야 사용할 수 있는 인스턴스 변수와는 달리 클래스변수는 인스턴스를 생성하지 않아도 사용가능 하다. 클래스를 선언하는 방법은 추가로 변수 선언부 맨 앞에 static 키워드를 붙여주면 된다.

class Cars {
	static int wheel = 4; //클래스 변수
	int speed; //인스턴스 변수
}

public class Class_practice_3 {

	public static void main(String[] args) {
		System.out.println(Cars.wheel); // 클래스 변수 접근 가능
        // System.out.println(Cars.speed); 에러발생! 인스턴스 변수 접근 불가
		
		Cars car1 = new Cars();
		
		System.out.println(Cars.wheel);
		System.out.println(car1.speed); // 인스턴스 생성 후에는 접근 가능
		
		Cars car2 = new Cars();
		
		System.out.println("<변경 전>");
		System.out.println("car1.speed : " + car1.speed);
		System.out.println("car2.speed : " + car2.speed);
		System.out.println("car1.wheel : " + car1.wheel);
		System.out.println("car2.wheel : " + car2.wheel);
		
		car2.speed = 100;
		car2.wheel = 5;
		System.out.println("<변경 후>");
		System.out.println("car1.speed : " + car1.speed);
		System.out.println("car2.speed : " + car2.speed);
		System.out.println("car1.wheel : " + car1.wheel);
		System.out.println("car2.wheel : " + car2.wheel);

	}

}
profile
그냥 해보자 안되더라도 해보자 끝까지 해보자

0개의 댓글

관련 채용 정보