본문 바로가기
2022-2/seminar

자바 | 5장 객체와 클래스

by 이망고_ 2022. 1. 28.
  • 객체 
  • 클래스
  • 클래스 구성요소
  • 오버로딩
  • 정적(Static)

객체 지향 프로그래밍

객체를 정의 및 기능을 구현, 프로그램을 유연하게 하고 유지 보수가 좋아 대규모 프로젝트 개발에 많이 사용

 

객체

객체가 뭐야?

  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것
  • 물리적(자동차, 사람)으로 존재하는 것과 추상적(학과, 주문)으로 존재하는 것 모두 객체가 될 수 있다
  • 객체 : 속성(필드) + 동작(메소드)
  • 클래스 -----인스턴스화----> 객체 (=오브젝트, 인스턴스)
  • 인스턴스화 : 객체를 만들기 위한 작업 

클래스

  • 멤버 변수(필드) + 메소드 + 생성자
  • 클래스를 쓰는 이유 
    • 클래스로 하나의 객체에 대한 설계도를 짜면 그 객체를 반복적으로 생성 가능
    • 다른 클래스의 필드와 메소드를 상속받아 쓸 수 있다(융합성이 좋다)
  • 멤버 변수 : 한 객체 가지는 고유의 속성(정보)을 변수로 저장한것
  • 메서드 : 객체의 기능(동작)을 구현한 것
  • 생성자 
    • 보통 객체를 생성하고 객체의 고유 데이터 값을 필드에 저장하는 작업하는데 대개 동일 패턴으로 이루어지기 때문에 객체가 생성되고 나서 할 일을 클래스 안에 미리 써서 모든 객체들이 그 로직을 이용해 초기화 작업을 할 수 있게 하는 게 생성자
    • 따로 선언하지 않으면 자동(디폴트 생성자)으로 생성해준다

명시적 생성자 선언

  • 코드의 단순화
  • 생성자 : python 의 __init__ 역할
  • this : python 의 self 역할
    • 디폴트 생성자만 있는 상태 : Car EV = new Car( );
    • 명시적 생성자를 만든 후 : Car EV = new Car(4885, "Tesla", "Red");

오버로딩

메서드의 이름은 같고 매개변수의 개수나 타입, 순서가 다른 함수를 정의하는 것을 말한다

  • 생성자 오버로딩 : 외부의 일정하지 않은 데이터들을 이용하거나 선택적으로 매개변수를 넘겨줘 객체를 초기화하기 위해 생성자를 다양화하는 것 
  • 메소드 오버로딩: 타입이 달라야 돼 
    • System.out.println(x);
    • static / static / static 으로 접근하는 거니 다 실행이 된다

정적

정적(static) 공통의, 공유하는 개념

  • 정적 필드(=공용 변수)
    • 정적 필드는 여러 객체가 있을 때 이 객체 간의 고유한 데이터 값이 아닌 공용으로 사용하는 필드 값이 필요할 때 사용된다
    • 모든 객체가 공통으로 가지고 있는 어떠한 값으로 말할 수도 있다
    •  static int grandTotal = 0;
  • 정적 메소드
    • 정적메소드는 객체를 따로 생성하지 않고 그 클래스 안에 있는 메소드만 이용하고 싶을 때 사용

* 객체처럼 필드와 메소드로 구성되어 있다