-
[JAVA] Class / Constructor / 객체지향프로그래밍Java 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로 코드짜는 걸 객체지향 프로그래밍이라고 함
(객체지향 문법은 길고 복잡한 코드 정리도구, 관리도구)