728x90
반응형
뭘 했길래 시간이 이리 빠르지
정신 차려보니 밤인데
package import
작은 의문이 들었다.
같은 이름의 클래스가 서로 다른 패키지에 존재할때
다른 클래스나 메인에서 두 패키지를 모두 import 한다면
해당 클래스들은 어떻게 불러 올 수 있는가?
애초애 그런 행위를 하면 안되나?
혹은 overload
시키듯 구분할 수 있는 여지를 두면
JVM이 알아서 처리를 하는가?
overload VS override
해당 의문을 해결하기 위해 검색해보던 도중 내가 overload
와 override
의 구분을 모른다는것을
알게 되었다.
overloading
은 이름이 같은 메서드에 매개변수 차이를 주는것
public void print(int x) {
System.out.println(x);
}
public void print(double y) {
System.out.println(y);
}
override
는 상속 관계에 있는SuperClass
(부모)의 메서드를SubClass
(자식)에서 재 정의 하는것
class Parent {
public void display() {
System.out.println("부모 클래스의 display 메서드");
}
}
class Child extends Parent {
@Override
public void display() {
System.out.println("자식 클래스의 display 메서드");
}
}
좋다. 그렇다면 이제 다시 돌아와서 나의 의문에 대한 가설은overload
에 해당한다는것을 잘 알게 되었다.
하여 조사를 하다보니 일단 궁금증에 문제가 있다는걸 깨닫게 되었다.
실제로 혼자 진행하는것이 아닌 협업 프로젝트나 큰 규모의 프로젝트에서는
이러한 충돌을 방지하기 위해 네이밍에 규칙을 둔다고 한다.
다만 만약에 빡대가리 두명 나같은 이 고집을 부려 같은 이름의 class
를 생성해 두었다면
두 package
가 모두 import
되어 있는 상황이라고 해도
해당 package
를 Class
명 앞에 명시해주면 된다.
import package1.Animal;
import package2.Animal;
public class Main {
public static void main(String[] args) {
package1.Animal animal1 = new package1.Animal();
package2.Animal animal2 = new package2.Animal();
}
}
궁금증이 해소 되고서야 느끼는거지만 굳이 이런걸 궁금해 할 필요는 없었던것 같다.
728x90
반응형
'TIL' 카테고리의 다른 글
2023년 10월 26일 (1) | 2023.10.26 |
---|---|
2023년 10월 25일 (0) | 2023.10.25 |
2023년 10월 23일 (0) | 2023.10.23 |
2023년 10월 22일 (1) | 2023.10.23 |
2023년 10월 21일 (0) | 2023.10.23 |