본문 바로가기

BackEnd/Java

[java] class

728x90
반응형

이전에 정리를 한 번 했었지만 한 번 더 정리해보겠습니다.

계속 공부를 하다보니 클래스 내부의 함수들과 변수들을 지칭하는 말들이 구분이 잘 되지 않네요,,

필드나 메소드, 인스턴스 등을 잘 구분해야합니다!

 

https://bobo12.tistory.com/16

 

[java] 자바의 클래스(class)란?

1. 객체지향 언어 현실에 존재하는 사물과 개념들을 소프트웨어적으로 구현하고, 그 객체들이 상호작용하여 데이터를 처리하는 방식입니다. 특징 (1) 코드의 재사용성 : 새로운 코드 작성시 기존

bobo12.tistory.com

 

◎ Class 사용 예제

class Car1 {
	// 필드 (속성, 객체 변수)
	boolean powerOn;    // false
	String color;       // null
	int wheel;          // 0
	int speed;          // 0
	boolean wiperOn;    // false
	
	// 메소드 (함수, 기능, function) 이름()
	void power() { powerOn = !powerOn; }
	void speedUp() { speed++; }
	void speedDown() { speed--; }
	void wiper() { wiperOn = !wiperOn; } 	
}

public class Car {
	public static void main(String[] args) {
		// 객체가 생성되지 않으면 클래스 사용이 불가능하다.
		// System.out.println("시동 처음 초기화 : " + Car.powerOn);
		
		// Car 클래스를 이용해서 mycar라는 객체 생성 : Car 클래스안에 필드와 메소드 이용 가능
		Car1 mycar = new Car1();
		
		System.out.println("시동 처음 초기화 : " + mycar.powerOn);
		System.out.println("차의 색상 초기화 : " + mycar.color);
		System.out.println("바퀴의 수 초기화 : " + mycar.wheel);
		System.out.println("속력 초기화 : " + mycar.speed);
		System.out.println("와이퍼 작동 초기화 : " + mycar.wiperOn);
		
		mycar.power();
		System.out.println("시동 메소드 동작 : " + mycar.powerOn);
		mycar.power();
		System.out.println("시동 메소드 다시 동작 : " + mycar.powerOn);
		
		mycar.color = "black";
		System.out.println("현재 차의 색상 : " + mycar.color);
	}
}

//	출력 : 
//	시동 처음 초기화 : false
//	차의 색상 초기화 : null
//	바퀴의 수 초기화 : 0
//	속력 초기화 : 0
//	와이퍼 작동 초기화 : false
//	시동 메소드 동작 : true
//	시동 메소드 다시 동작 : false
//	현재 차의 색상 : black


main에 코드를 전부 다 넣을 수 없기때문에 class를 별도로 생성합니다.

public class Class_practice_2 {
	public static void main(String[] args) {
		Car1 mycar1 = new Car1();
		Car1 mycar2 = new Car1();
		
		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();
		System.out.println("mycar1의 속도 : " + mycar1.speed);
		System.out.println("mycar2의 속도 : " + mycar2.speed);
		System.out.println();
		System.out.println("mycar1의 와이퍼 작동 여부 : " + mycar1.wiperOn);
		System.out.println("mycar2의 와이퍼 작동 여부 : " + mycar2.wiperOn);
		
		System.out.println();
		System.out.println(mycar1);
		System.out.println(mycar2);
	}
}

//	출력 : 
//	mycar1의 색 : red
//	mycar2의 색 : black
//	
//	mycar1의 속도 : 1
//	mycar2의 속도 : 0
//	
//	mycar1의 와이퍼 작동 여부 : false
//	mycar2의 와이퍼 작동 여부 : true
//	
//	java0112.Car1@15db9742
//	java0112.Car1@6d06d69c

 

 

◎ Class 사용 예제(static(클래스 멤버), 인스턴스 멤버) 

class Car2 {
	static int wheel = 4;
	int speed;
}

public class Class_practice_3 {
	public static void main(String[] args) {
		
		System.out.println(Car2.wheel);
		// System.out.println(Car1.speed);
		// 인스턴스 멤버를 사용하려면 참조 변수 생성 필요
				
		Car2 mycar1 = new Car2();
		
		System.out.println(Car2.wheel);
		System.out.println(mycar1.speed);
		
		Car2 mycar2 = new Car2();
		
		System.out.println("<변경 전>");		
		System.out.println("mycar1.speed : " + mycar1.speed);
		System.out.println("mycar2.speed : " + mycar2.speed);
		System.out.println("mycar1.wheel : " + mycar1.wheel);
		System.out.println("mycar2.wheel : " + mycar2.wheel);
		
		mycar2.speed = 100;
		mycar2.wheel = 5;
		
		System.out.println("<변경 후>");		
		System.out.println("mycar1.speed : " + mycar1.speed);
		System.out.println("mycar2.speed : " + mycar2.speed);
		System.out.println("mycar1.wheel : " + mycar1.wheel);
		System.out.println("mycar2.wheel : " + mycar2.wheel);
	}
}

//	출력 : 
//	4
//	4
//	0
//	<변경 전>
//	mycar1.speed : 0
//	mycar2.speed : 0
//	mycar1.wheel : 4
//	mycar2.wheel : 4
//	<변경 후>
//	mycar1.speed : 0
//	mycar2.speed : 100
//	mycar1.wheel : 5
//	mycar2.wheel : 5

 

 

문제들만 풀다가 Class나 method를 사용하니 헷갈리는 부분들이 많아서 다시 정리를 한 번 더 해보았습니다!

 

한 번 더 보니 좀 더 이해가 잘되는 것 같아요!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형