티스토리 뷰

728x90

Java

KOSTA DAY08

Java

필드

정적필드

  • static 키워드가 붙은 필드
  • 별도로 객체나 메소드를 생성하지 않아도 메모리가 생성된다.
  • 클래스 이름.이름 으로 호출한다.
    (ex : math.random, Integer.parseInt)
  • static 블록이나 메소드안에서 일반 멤버변수 사용할 수 없다.
    (메모리 생성시점이 다르다.)

상수필드

  • static, final 키워드가 모두 붙은 필드
  • 상수를 구할 땐 final을 반드시 호출해야한다.
  • 수정하지 않을 요소에 사용됨

멤버변수와 지역변수 차이점

  • 멤버변수 → 객체가 소멸될 때 까지 사용
  • 지역변수 → 해당 메소드 안에서만 사용

예제

Java

  • grandTotal 은 정적필드 이고, total은 멤버변수이다.
  • obj1, obj2 에 각각 accumulate시켰을 때, total의 경우 일반 멤버 변수이기때문에 서로 다른 객체인 obj1와 obj2 는 다른 total을 가진다.
  • grandTotal은 정적필드로서 두값을 합친 30이 리턴된다.


오버로딩

메소드의 이름, return값이 동일하지만 매개변수(파라미터)의데이터 타입 및 개수로 구분하는 메소드를 생성하는것을 말한다.

메소드 시그니처
메소드 오버로딩의 핵심은 바로 메소드 시그니처에 있습니다.
메소드 시그니처란, 메소드의 선언부에 명시되는 매개변수의 리스트를 가리킵니다.
만약 두 메소드가 매개변수의 개수, 타입, 순서 까지 모두 같다면 이 두 메소드의 시그니처는 같다고 할 수 있습니다.


오버라이딩

부모 클래스의 메소드를 호출하여 사용할 때, 사용자의 필요에 따라서 수정하는것을 말한다.

  • object객체는 모든 데이터를 가질 수 있다.
  • Java의 다형성을 표현한다.
  • 메소드의 이름, 매개변수, 리턴타입이 같아야 한다.


상속

Java

  • 기존 클래스와 유사한 클래스를 만들어야 하는 경우 사용된다.
    (확장성 용이)
  • extends 함수를 사용하여 상속한다.
    (final함수를 사용한 클래스는 상속불가, 메소드 앞에 사용 시 오버라이딩이 불가능하다.)
  • 자식을 생성하면 부모도 생성된다.(new 자식 → 자동으로 new 부모)
  • super 함수가 없을 시, 부모의 default생성자를 생성해야한다.
    (default생성자를 생성하지 않으면 상속 시, 에러가 발생한다.)
  • 초기화할 내용이 부모에게 있을 시, super 함수를 사용하여 초기화 한다.
  • 상속관계에서 자식은 부모로 형변환이 가능하다.(즉, 부모 > 자식)
  • 상속 후, 부모로 형변환 된 자식은 오버라이딩한 메소드만 호출 가능하다. ( 부모로 형변환 되었기 때문에)
  • 부모로 형변환 된 자식은 이미 크기가 커져서 자식안으로 들어갈 수 없다. 강제 캐스팅이 필요하다.
    (자식만 가지고 있는 클래스를 호출하기 위한 목적)



728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday