JAVA의 this란?
자바의 this나 python의 self같은 애들이 있는데 얘들이 뭘 의미하는건지 매우 헷갈렸다.
인스턴스나 객체도 무슨 소리인지 몰랐는데 이해하고 보니 매우 간단했다
다른 헷갈리는 사람들을 위해 매우 간단하게 설명하기+미래의 내가 헷갈리면 보길바란다. 머리를 비우고 보면 편하다.
This 예시
JAVA를 사용해서 어떤 변수 Human을 만들어주는 함수를 작성한다고 가정하자.
(class generate_human() -> 사람1,사람2,사람3.......)
1. (이름,나이,몸무게)를 입력해서 "사람1"을 만들려고 한다.
public class Human {
String name;
int age;
double weight;
Human(String name, int age, double weight){
this.name=name;
this.age=age;
this.weight=weight;
}
}
2. 만든 "사람1"에 "먹기"와 "마시기" 기능(메서드)을 넣으려고 한다.
void eat()와 void drink()를 추가
public class Human {
//기본값 default
String name;
int age;
double weight;
//this를 넣어줘야지만 default값이 아닌 함수로 생성한 값의 데이터가 표시된다
Human(String name, int age, double weight){
this.name=name;
this.age=age;
this.weight=weight;
}
//Human클래스의 메서드 eat()
void eat() {
System.out.println(this.name+" eat Bread");
}
//Human클래스의 메서드 drink()
void drink(String what) {
System.out.println(this.name+" drinking "+what);
}
}
나왔다 this!!
Human(String name, int age, double weight){ this.name=name; this.age=age; this.weight=weight; } void eat() { System.out.println(this.name+" eat Bread"); } void drink(String what) { System.out.println(this.name+" drinking "+what); } |
this.name = name이라고 나와있는게 보이는가? name은 Human(String name)에서 입력한 문자값입니다.
ex) Human("test",)라면 name=="test"다.
즉, this.name=name으로 안하고
Human(String makingName,...){ this.name = makingName... } |
이라해도 문제가 없다는 것이다.
쉽게 말하면 this는 "해당 클래스를 사용해서 만들어진 객체(인스턴스==사람1)의 값"이다
즉, 내가 Human()을 사용해서 사람1을 만들건데 만드는 사람1의 name은 입력값 makingName이다를 this.name = name이라고 표현한것이다.
Human으로 생성하기 예시
Human human = new Human("Rick",20,70);
Human human2 = new Human("James",25,85);
System.out.println("사람1의 name"+human.name);
System.out.println("사람2의 name"+human2.name+"\n");
System.out.print("사람1의 eat()동작 : ");
human.eat();
System.out.print("사람1의 drink()동작 : ");
human.drink("Coke");
System.out.println("\n사람1의 연령,이름,몸무게 출력");
System.out.println(human.age);
System.out.println(human.name);
System.out.println(human.weight);
위의 예시 맨 아래의 human.age와 같은 의미라고 보면 된다.
끝.
728x90
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[JAVA / 자바 / 자바 기초] 배열 랜덤 생성 + 랜덤하게 섞기 (0) | 2023.12.14 |
---|---|
[JAVA / 자바 / 자바 기초] 정수 배열 사이 값 구하기 + 카운트 -문제 (0) | 2023.12.13 |
[JAVA / 자바] JAVA 온라인 무료 편집기 / JAVA Free Online Compiler (0) | 2023.12.13 |
[JAVA / 자바 / 자바 기초] 간단한 직각삼각형 변 길이 구하기 (0) | 2023.12.13 |
[Java / 자바 / 자바 기초]기본적인 String 메서드들 (0) | 2023.12.12 |