🚧 자바 문법으로 보는 객체 생성
public class Player {
private int no;
private String name;
private int age;
private String addr;
private String deptName;
...
}
클래스는 Player에 대한 틀을 만들어준다.
Player [] p = new Player[3];
p[0] = new Player(10, "김예린", 28 , "현충로", "KB");
이때 객체는 new를 통해 생성된다.
Player에 대한 배열을 만드는 코드이다.
객체를 생성한다는 것은 Player 1에 대한 계정을 만드는 것과 같다.
이때 객체를 생성할 때 실제 값이 들어가는 것이 아닌 주소값을 할당하는 것이다.
이는 메모리 측면은 고려한 것이다.
static
static은 객체와 관련없이 언제나 메모리에 존재한다.
이 그림처럼 클래스 한켠에 static가 자리잡고 있다고 가정해보자.
static은 객체가 생성되기 전에도 존재하는데 객체 메모리가 할당되기를 기다리고 있어야 하기 때문이다.
이 한켠에 자리하고 있는 static은 객체가 생성되면서 계속해서 증가한다.
static은 Player1의 정보들(데이터/값)들이 담긴 곳이 어디인지 나타내는 주소를 저장하고 있다.
즉, static에 담긴 Player1의 정보는 Player1에 대한 이름/나이/주소 등과 같은 데이터가 아닌 주소이다.
이는 메모리를 위한 것인데, 클래스를 생성할 때 static을 남발하면 메모리를 차지하는 것 또한 많아지기 때문에 주의해야한다.
Overloading
Overloading이란 단순한 의미로 동일한 기능을 수행하는 메서드가 여러 개 있다는 것이다.
즉, 두 메서드가 같은 이름을 가지고 있으나 인자의 수나 자료형이 다른 경우를 말한다.
동일한 기능을 수행하는 메서드를 추가로 작성하는 것이다.
작성규칙
- modifier(접근제한자) / returnType 같아도 달라도 상관없다.
- method 이름은 반드시 같아야 한다.
- 이름은 같고 하는 일은 다르면 개발자 입장에서 호출하기 편리하기 때문이다.
- 인수는 무조건 인수의 순서 or Type or 개수가(셋 중하나가) 달라야 한다.
class Test{
public void aa(){
}
public void aa(int i){
} // overloading
protected int aa(String s){
return 4;
}
void aa(int i, String s){
}
}
이처럼 메소드 이름은 같아도 인수의 타입, 순서, 개수가 다 다르게하여 오버라이딩 해주었다.
// calling method
Test t = new Test();
t.aa();
t.aa("hiiii");
호출할 때는 클래스를 new를 통해 객체를 생성하고 메소드와 같이 호출해준다.
t.aa(); 은 첫번째 메소드가 반환되고
t.aa("hiiii"); 은 세번째가 메소드가 반환된다.
오버로딩은 동일한 기능을 수행하는 것이므로 많은 로직이 겹치게 된다.
반복되는 코드를 하나의 메소드로 모아 코드를 재사용하는 것으로 사용하여 중복 코드를 제거할 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA] 정보은닉(getter, setter), 상속 (0) | 2023.03.09 |
---|---|
[JAVA] 생성자 Constructor (0) | 2023.03.09 |
[JAVA] Method (2) | 2023.03.08 |
[JAVA] 반복문 (for, while, do - while, 백준 2439 별 찍기 - 2) (1) | 2023.03.06 |
[JAVA] 조건문 (if - else, switch - case) (0) | 2023.03.06 |