CS/Java

[JAVA] Class / Constructor / 객체지향프로그래밍

dbfl9911 2024. 6. 15. 21:31
반응형

-  ★class가 뭐냐면?

변수와 함수 보관하는 통

class Test {
  String name = "kim";
  void hello(){ System.out.println("안녕");  }
}

 

 

 

- ★ class에 있던 변수, 함수 쓰려면?

new 키워드 써서 복사부터 하기!

var test = new Test();

new 클래스() 라고 쓰면 클래스에 있던 변수랑 함수 복사해주세요~ 라는 뜻

그러면 진짜로 클래스에 있던 변수랑 함수를 복사해온 이상한 자료가 그 자리에 남음

(=> 변수랑 함수 복사본 담고있는 자료를  object라고 부름)

 

 

 

 

- object 안에 저장된 변수랑 함수를 가져다쓰고 싶으면?

점찍어서 변수나 함수 꺼내서 쓰면 됌

var test = new Test();
System.out.println(test.name);

 그래서 .name 붙이면 이 자리에 아까 Test 클래스에 보관해놨던 kim이라는 변수가 남는 것

test.hello() 처럼 그 안에 있던 함수도 사용가능 

 

 

 

 

- 클래스를 복사해올 때 타입을 정확히 넣고 싶으면?

Test test = new Test();

클래스를 복사해올 때 타입을 정확히 넣고 싶으면 뭘넣어야하냐면

타입자리에 클래스명 넣으면 된다

클래스도 일종의 자료형 역할을 할 수 있어서 그런 것

 

 

 

- 왜 class 씀?

1. 자바를 선택한 이상 자바에선 항상 코딩을 클래스부터 써놓고 시작하기 때문에 어쩔 수 없이 강제로 써야함
2. 관련있는 변수, 함수를 한 곳에 보관할 수 있으니까 코드 정리해두기 좋음
3. 중요한 변수, 함수 원본을 안전하게 보관할 수 있음

(중요한 서류 수정할 때 원본을 직접 수정합니까

원본을 직접 수정하고 그러면 좀 위험할 수 있어서 보통은 복사한 다음에 그걸 가져다가 쓰는게 안전!

class도 마찬가지로 변수, 함수 원본을 보관해두고  이걸 new 키워드로 복사해서 쓰면 원본 데이터를 안전하게 그대로 지킬 수 있으니까 그래서 쓰는 것)

 

 

 

-클래스 안에 있는 변수?

  field / attribute

- 클래스 안에 있는 함수?

   method

 

 

 

 

- constructor 문법

클래스에서 쓸 수 있는 constructor와 파라미터문법을 쓰면

object 뽑을 때 마다 매번 다른 변수값을 가지도록 클래스를 만들기 가능

@SpringBootApplication
public class ShopApplication {

	public static void main(String[] args) {
		SpringApplication.run(ShopApplication.class, args);

		var test = new Friend( "park");
		System.out.println(test.name);
	}

}

class Friend {
	String name = "kim";
	int age = 20;
	// 아래가 constructor
	Friend(String a){  // new Friend()할 때 자동실행됨
		this.name = a; // this는 새로 생성될 object를 뜻함
	}
}
 

 object 뽑을 때마다 각각 다른 변수값을 부여하고 싶으면 constructor를 만들면 된다

클래스이름( ){ } 으로 함수만들면 그게 constructor임!

그 안에 있는 코드는 object 뽑을 때 자동실행되므로 this 같은거 써서 변수의 초깃값을 맘대로 설정가능

심지어 함수 파라미터 문법도 사용가능

 

 

- class랑 object로 코드짜는 걸 객체지향 프로그래밍이라고 함 

(객체지향 문법은 길고 복잡한 코드 정리도구, 관리도구)

반응형