2023.03.23
개인 기록용 입니다 :) 오타, 수정 등 피드백 환영
참조 : 파이썬 클래스
이전 파이썬에서의 클래스를 교육 받고
자바에서의 클래스 교육을 받으니
비슷한 점이 한두개가 아니었다
1. 생성자
// 파이썬
class Circle:
def __init__(self, name, radius) :
self.name = name
self.radius = radius
// JAVA
public class Circle {
int radius;
String name;
public class Circle(String n, int r) {
name = n;
radius = r;
}
}
자바는 클래스를 호출하는 순간
기본 생성자를 작성하지 않아도
컴파일러는 자동으로
기본 생성자가 만들고 호출해준다
하지만 매개변수를 같이 받는
생성자가 존재한다면
call by value
기본 생성자를 따로
작성해주어야 한다
Circle(매개변수 1, 매개변수 2) 를 호출하여
매개변수 값을 넣어줬을 때
Circle 클래스를 호출하고
매개변수 개수가
적합하는 생성자를 찾는다
그리고 해당 생성자의 내용을 실행하면
전역변수
radius = r
name = n
값으로 지정된다
원의 면적을 구하는 메소드도 넣어보자
// JAVA
public class Circle {
int radius;
String name;
public class Circle(String n, int r) {
name = n;
radius = r;
}
}
public double getArea() {
return 3.14 * radius * radius
}
Circle 클래스를 호출하고 생성자를 통해 값을 지정해준 뒤 getArea() 함수로 원의 면적을 구해보면
public static void main(String[] args) {
Circle c = new Circle("원의 면적", 5);
double area = c.getArea();
System.out.printf("%s : %.1f", name, area);
}
위 코드와 같고 출력 결과는 아래와 같다
2. this
c#을 하면서 참 많이 본 친구다
this. ~ 하면서 많이 활용됐는데
정확한 쓰임새는 몰랐다
this 는 자기 자신을 참조한다
라고 이해를 하면 좋은데
사실 이 이야기를 듣고도 이해하기 어려웠다
코드를 살펴보며 이해해보자
public class TV {
String tv;
int year;
int inch;
public void show() {
System.out.printf("%s에서 만든 %d년형 %d인치 TV",tv, year, inch);
}
public TV(String a, int b, int c) {
this.tv = a;
this.year = b;
this.inch = c;
}
public static void main(String[] args) {
TV myTV = new TV("LG", 2017, 32);
myTV.show();
}
}
가장 윗부분 부터 보면
TV 라는 클래스를 생성하고
전역변수(객체)를 설정하고
아래에 myTV 라는 객체를 생성한다
myTV 객체에는 매개변수가
“LG”, 2017, 32 3개가 있으니
TV 클래스의 생성자도
매개변수가 3개인
이 생성자를 호출할 것이다
여기에 this. 라는 개념이 있는데
이 this 는
생성된 객체
즉, myTV 객체를 뜻한다
이 생성자를 통해 호출되는 건 이걸로 해~
라는 느낌이랄까?
좀 더 풀어보자면
myTV 의 tv 변수는 a로
myTV 의 year 변수는 b로
myTV 의 inch 변수는 c로 지정
이렇게 되고
클래스의 show 메소드를 호출해서
출력해보면 아래와 같이 나타난다