자바야 나 좀 그만 자바..
많은 언어들을 배웠는데...
선배들이나 주변 사람들이 항상 하던 말이 "자바만 알아도 먹고사는데 지장 없다."
그 말을 믿고 무작정 자바로 시작했던 나는 공부하면서 많이 헷갈렸던 부분이 있었는데
- final과 static 키워드
- parameter와 argument
- 업캐스팅과 다운캐스팅
- 레퍼런스 변수, 인스턴스
등등 더 많지만 지금 생각 나는건 이정도가 있는데
하나씩 알아보겠습니다.
final 클래스: 상속이 불가능한 클래스
예: public final class TestClass
이런식으로 만들면
public class SubClass extends TestClass X
상속x
final 메소드: 오버라이딩이 불가능한 메소드
예: public final void testFun()
이 메소드는
extends(상속) 받아도 @Override
오버라이딩x
final 변수: 한번 초기화하면 값의 변경이 불가능한 변수
예: final int count = 1;
이런식으로 한번 선언하면
count = 3 X
이런식의 값의 변경이 불가능하다.
public class TestClass {
public static int testFun(String word) {
return word.length();
}
}
문자열 word를 받아 word의 길이를 리턴하는 함수입니다. 사용해 보면
int length = TestClass.testFun("abcd");
이런식으로 인스턴스가 없어도 사용이 가능합니다.
여기서 하나 더 final과 static을 같이 쓰게 되면??🤔
public static final String name = "Park";
상수로 보통 클래스의 내부 또는 외부에서 참조 용도로 사용합니다!
parameter(매개변수) 와 argument(전달인자)의 차이점은 다음과 같습니다.
- parameter(매개변수)는 함수에 사용되는 변수 그 자체
- argument(전달인자)는 parameter(매개변수)안의 값 자체
위의 예시를 코드로 살펴보면
public int add(int x, int y){
return x + y;
}
System.out.println(add(1,2));
위의 코드에서
parameter(매개변수)는 x, y 두 변수 자체를 말하고
argument(전달인자)는 add메소드 안의 값인 1, 2를 말합니다.
우선 업캐스팅과 다운캐스팅을 보기 전에 캐스팅이 무엇인지 알아보면
캐스팅(casting)이란 타입을 변환하는 것을 말하며 형변환이라고도 한다. 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다.
이렇게 형변환을 하는게 캐스팅입니다.
자식 클래스가 부모 클래스의 타입으로 캐스팅
자바에서 상속관계에 있는 자식 클래스는 부모 클래스의 모든 특성을 상속 받습니다.
이 때문에 자식 클래스는 부모 클래스로 취급될 수 있습니다.
예: 부모클래스 변수명 = 자식클래스;
부모 클래스가 자식 클래스의 타입으로 캐스팅
업캐스팅된 것을 다시 원상태로 돌리는 것을 말합니다.
이때 주의할 점은 다운캐스팅은 업캐스팅과 다르게 형변환할 타입을 명시적으로 선언해야 합니다.
예: 자식클래스 변수명 = (변환할형) 부모클래스;
자바에선 클래스를 사용하기 위해선 반드시 메모리에 생성 해주어야 합니다.
이렇게 메모리에 생성된 클래스를 클래스 객체 혹은 인스턴스(instance)라고 합니다.
인스턴스는 자바에서 new 연산자로 생성합니다.
레퍼런스 변수 혹은 참조 변수라고 하는 변수는 일반적인 데이터를 넣어두는 변수가 아닌 위의 인스턴스를 가리키는데 사용되는 변수입니다.
모든 인스턴스는 레퍼런스 변수만을 통해서 사용이 가능합니다.