Day14 :) 중간정리

Nux·2021년 9월 18일
0

자바웹개발

목록 보기
14/105
post-thumbnail

클래스

  • 객체를 생성할 때 사용되는 틀

클래스의 구성요소

  • 변수, 생성자, 메서드

객체

  • 클래스의 구성요소들을 실제 사용가능한 상태로 만든 것
  • 메모리의 힙영역에 생성
  • 참조값이라고 하는 고유한 주소값을 갖고 있음
  • 객체의 참조값은 참조변수에 저장됨

참조변수

  • 객체의 참조값을 저장하는 변수
  • 객체 생성에 사용된 클래스가 참조변수의 타입이 됨
    Person person = new Person();
    • Person은 참조변수의 타입이다
    • person은 참조변수이다
  • 객체의 멤버변수, 멤버메서드의 사용은 항상 참조변수를 통해서만 가능
    PersonService service = new PersonService();
    service.printAllPerson();
  • 참조변수의 값이 null이면 그 참조변수는 객체를 참조하고 있는 상태가 아니다
    • 참조변수로 객체의 멤버변수, 멤버메서드를 사용하면 NullPointerException 오류 발생

멤버변수

  • 객체의 속성(정보,값,데이터)를 저장하는 변수
  • 객체가 생성 될 때 변수의 타입에 맞는 저장소가 생성되고 저장소에는 해당 타입의 기본값이 저장되어있음
  • 객체가 유지되는 동안 멤버변수에 저장된 값도 계속 유지

멤버메서드

  • 객체의 고유한 기능 담당
  • 멤버메서드는 객체내의 모든 멤버변수를 사용 가능하며 객체 내의 다른 멤버메서드도 실행 가능
  • 중복정의 가능
  • 생성자 메서드는 멤버메서드가 아니다

생성자메서드

  • 클래스 이름과 같은 이름을 가진 메서드
  • 반환타입에 대한 정의가 없다
  • new 연산자와 같이 사용되며 다른 방법으로는 호출 불가
  • 객체가 생성되면 new 연산자와 같이 사용된 생성자 메서드가 자동 실행됨
  • 생성자 메서드가 중복정의 되어 있다는것은 객체 생성 후 다양한 방법으로 객체를 초기화 할 수 있다는 뜻

메서드 중복정의(method overloading)

  • 하나의 클래스 안에서 같은 이름의 메서드를 여러개 정의하는 것
  • 중복정의하기 위해서는 매개변수의 개수, 타입, 타입별 순서가 달라야함
  • 접근제한자, 반환타입은 같거나 달라도 상관 없음
  • 기능은 비슷하나 메서드를 실행 시 필요한 값의 타입이나 갯수가 다를 경우 중복정의 가능

상속

  • 부모클래스의 속성과 기능을 물려 받는 것
  • 부모클래스의 속성과 기능 중 접근제한자가 private인 것과 생성자는 자식클래스로 상속 불가
  • 상속을 해야 할 때
    • 여러 하위 클래스에 동일한 속성과 기능이 반복될 때
    • 부모 클래스의 속성과 기능을 물려받아 빠르게 자식 클래스를 구현해야 할 때
    • 여러 관련있는 클래스들을 같은 종류로 만들어야 할 때

메서드 재정의

  • 부모로부터 물려받은 메서드를 자식 클래스에서 다시 정의하는 것
  • 접근제한자, 반환타입, 메서드명, 매개변수의 타입 및 개수가 전부 동일해야함
  • 메서드를 재정의 하는 이유
    부모로부터 물려받은 기능이 자식 클래스에서 사용하기 적합치 않을 때
    부모클래스와 같은 사용법으로 기능을 구현해야 할 때

클래스 형변환

  • 자식클래스 타입의 객체를 부모클래스 타입의 참조변수가 참조 하는 것
  • 자식클래스 타입의 참조변수는 절대 부모클래스타입의 객체를 참조 할 수 없다.
  • Object타입의 참조변수는 모든 객체를 참조할 수 있다
  • 클래스형변환이 발생하면 부모타입의 참조변수에 저장된 값은 자식클래스 타입의 참조값이 아닌, 참조변수 타입과 일치하는 객체의 주소값이다
    Phone p = new Iphone();
    • 참조변수 p에 저장된 참조값은 Iphone 객체의 참조값이 아니라, Iphone객체 생성 시 같이 생성된 Phone 객체의 참조값이다
    • 참조변수 p는 Phone객체의 공개된 속성과 기능 사용 가능
    • 참조변수 p는 묵시적 형변환을 통해 Iphone객체의 속성과 기능 사용 가능
    • 단, Phone객체와 Iphone객체에 메서드 재정의 관계에 있는 메서드가 있으면, Iphone객체의 메서드가 실행된다

다형성

  • 메서드 중복정의의 다형성
    하나의 객체 안에 메서드가 중복정의 되어있으면, 매개변수에 따라 적절한 메서드가 자동으로 선택되어 실행됨
  • 메서드 재정의의 다형성
    부모클래스 타입의 참조변수가 자식클래스 타입의 객체를 참조하고 있고, 메서드 재정의 관계에 있을 때
    재정의 메서드를 실행하면 자식객체의 재정의된 메서드가 실행됨

0개의 댓글