[TIL-Java] 이해하기1

이용준·2022년 11월 15일
0

TIL

목록 보기
6/21

코드스테이츠 Section1이 지났으며, 점프 투 자바 한 권을 떼었다.
그동안 자료형, 제어문, 클래스, 인터페이스, 오버라이딩, 추상화, 다형성 등을 배웠다.
자료형과 제어문에서 크게 어려운점 없었지만 클래스 부분부터는 달랐다.

기존에 배웠던 파이썬은 일부 데이터 전처리와 함수 생성에 비중이 높았으며, 클래스를 통한 프로그램을 작성해 본 적이 없어 생소했다.

따라서 지금부터 생소했던 단어들을 정리하려 한다.


  1. 클래스는 설계도를 의미한다.
    • 객체는 설계도를 통해 만들어낸 것(thing)을 나타낸다.
  2. 객체는 크게 필드(속성)과 메서드(기능)로 나눌 수 있다.
  3. 필드/메서드/이너클래스를 객체의 멤버(member)라 한다.
  4. 객체는 new 키워드를 통해 생성한다
  5. 인스턴스란 클래스를 통해 생성한 객체를 의미
  6. 참조변수
    • Heap 영역에 값이 저장된 공간의 주소(값을) 저장하는 공간
    • 힙메모리의 주소값
    • int, float 등 값이 저장되는 변수
    • 주소값을 저장한다.

      기본형 변수는 실제값을 저장하며
      참조변수는 주소값을 저장한다.
      참고-참조형 변수의 기본개념

  7. 필드는 클래스변수/인스턴스변수/지역변수로 구분된다.
필드static
클래스 변수O
인스턴스 변수X
  1. 인스턴스 변수는 고유 개별성을 지니며, 클래스 변수는 공통된 저장 공간을 공유
  2. 클래스 변수는 별도 인스턴스 생성 없이 클래스명.클래스변수명을 통해 사용 가능
  3. 메서드는 메서드 시그니처와 메서드 바디로 구성
  4. 메서드 오버로딩은 하나의 클래스에 같은 이름의 메서드를 여러개 정의하는 것
    • 파라미터에 따라 메서드 아웃풋이 변경
  5. 메소드 오버라이딩은 부모 클래스의 메소드를 자식 클래스에서 재정의하는 것
  6. 생성자는 인스턴스 변수들을 초기화하는데 사용되는 특수한 메서드
    • 생성자명 == 클래스명
    • 생성자는 리턴타입 없음
    • 오버로딩 가능
    class Sample{
      Sample(){
      }
  7. 상속(extends)은 다형적 표현이 가능하다.
  8. 포함은 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것.
    class Circle{
      int x;
      int y;
      int r;
    }
    class Point{
      int x;
      int y;
    }
    class Circle{
      point c = new Point(); // 포함관계
      int r;
    }  
  9. 접근제어자
    접근제어자제한범위
    private동일 클래스
    default동일 패키지
    protected동일 패키지+다른 패키지 하위 클래스
    public제한 없음
  10. 다형성이란 하나의 객체자 여러 형태를 갖는 것을 의미
    • 상위 클래스 타입의 참조변수 통해 하위 클래스 객체 참조 허용
    • 상속 클래스 구현(부모-자식)
    • 메소드 오버라이딩
    • 업캐스팅 통한 객체 선언
    • 부모 클래스 객체로 자식 메소드 호출

      참고 - 자바 다형성 기본 및 활용

  11. 업캐스팅은 자식 클래스의 객체가 부모클래스 타입으로 형변환되는 것
  12. 다운캐스팅은 부모 클래스 객체를 자식 타입으로 형변환하는 것
    • 예)
    ...
    Car car = new Car();
    Vehicle vehicle = (Vehicle) car; // 업캐스팅
    Car car = (car) vehicle; // 다운캐스팅
  13. 추상화란 기존 클래스들의 공통적인 요소들을 뽑아 상위 클래스를 만들어 내는 것.
  14. abstract를 붙여 추상 메서드 또는 추상 클래스라 한다.
    • 시그니처만 있고 바디가 없는 메서드 의미
    • 오버라이딩 통한 추상 메서드 구현 가능
    abstract class AbstractExam{ // 추상 메서드가 하나 이상 포함된 추상 클래스
      abstract void start();// 메서드 바디 없는 추상메서드
    }  
  15. 인터페이스는 추상 메서드의 집합
    • 내부의 모든 필드가 public static final로 정의(생락가능)
    • static/default 이외 모든 메서드가 public abstract로 정의(생략가능)
      class 클래스명 implements 인터페이서명{
       ... // 인터페이스에 정의된 모든 추상메서드 구현
      }
profile
뚝딱뚝딱

0개의 댓글