할아버지도 쉽게 이해하는 JAVA 클래스 (1) | dasfef

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 메소드를 호출해서 출력해보면 아래와 같이 나타난다