KOSTA DAY08
Java
필드
정적필드
- static 키워드가 붙은 필드
- 별도로 객체나 메소드를 생성하지 않아도 메모리가 생성된다.
- 클래스 이름.이름 으로 호출한다.
(ex : math.random, Integer.parseInt) - static 블록이나 메소드안에서 일반 멤버변수 사용할 수 없다.
(메모리 생성시점이 다르다.)
상수필드
- static, final 키워드가 모두 붙은 필드
- 상수를 구할 땐 final을 반드시 호출해야한다.
- 수정하지 않을 요소에 사용됨
멤버변수와 지역변수 차이점
- 멤버변수 → 객체가 소멸될 때 까지 사용
- 지역변수 → 해당 메소드 안에서만 사용
예제
- grandTotal 은 정적필드 이고, total은 멤버변수이다.
- obj1, obj2 에 각각 accumulate시켰을 때, total의 경우 일반 멤버 변수이기때문에 서로 다른 객체인 obj1와 obj2 는 다른 total을 가진다.
- grandTotal은 정적필드로서 두값을 합친 30이 리턴된다.
오버로딩
메소드의 이름, return값이 동일하지만 매개변수(파라미터)의데이터 타입 및 개수로 구분하는 메소드를 생성하는것을 말한다.
메소드 시그니처
메소드 오버로딩의 핵심은 바로 메소드 시그니처에 있습니다.
메소드 시그니처란, 메소드의 선언부에 명시되는 매개변수의 리스트를 가리킵니다.
만약 두 메소드가 매개변수의 개수, 타입, 순서 까지 모두 같다면 이 두 메소드의 시그니처는 같다고 할 수 있습니다.
오버라이딩
부모 클래스의 메소드를 호출하여 사용할 때, 사용자의 필요에 따라서 수정하는것을 말한다.
- object객체는 모든 데이터를 가질 수 있다.
- Java의 다형성을 표현한다.
- 메소드의 이름, 매개변수, 리턴타입이 같아야 한다.
상속
- 기존 클래스와 유사한 클래스를 만들어야 하는 경우 사용된다.
(확장성 용이) - extends 함수를 사용하여 상속한다.
(final함수를 사용한 클래스는 상속불가, 메소드 앞에 사용 시 오버라이딩이 불가능하다.) - 자식을 생성하면 부모도 생성된다.(new 자식 → 자동으로 new 부모)
- super 함수가 없을 시, 부모의 default생성자를 생성해야한다.
(default생성자를 생성하지 않으면 상속 시, 에러가 발생한다.) - 초기화할 내용이 부모에게 있을 시, super 함수를 사용하여 초기화 한다.
- 상속관계에서 자식은 부모로 형변환이 가능하다.(즉, 부모 > 자식)
- 상속 후, 부모로 형변환 된 자식은 오버라이딩한 메소드만 호출 가능하다. ( 부모로 형변환 되었기 때문에)
- 부모로 형변환 된 자식은 이미 크기가 커져서 자식안으로 들어갈 수 없다. 강제 캐스팅이 필요하다.
(자식만 가지고 있는 클래스를 호출하기 위한 목적)