모든 데이터를 객체(object)로 취급하며, 이런 객체가 프로그래밍의 중심이 됨.
객체란?
실생활에서 우리가 인식할 수 있는 사물을 뜻함
이러한 객체의상태state
와행동behavior
를 구체화하는 형태의 프로그래밍이 객체지향프로그래밍.
이때 객체를 만들어 내기 위한설계도
와 같은 개념을클래스 class
라 함
인스턴스(instance)
자바에서 클래스를 사용하기 위해서 해당 클래스 타입의 객체(object)를 선언해야 함
→ 이렇게 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스화라고 함, 즉 인스턴스란 메모리에 할당된 객체를 의미.
클래스의 예
클래스(class)
-차(Car): 설계도
-필드(field)
car.modelName = "람보르기니";
car.modelYear = 2016;
car.color = "yellow";
car.maxSpeed = 400;
메소드(method)
자바에서 클래스는 멤버member로 속성을 표현하는 필드와 기능을 표현하는 메소드를 가짐.
그중에서 메소드는 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있음.
접근제어자
반환타입
메소드이름(매개변수목록)
{ //선언부
// 구현부
}
car.accelerate()
car.brake()
인스턴스(instance)
내 차(myCar)🚗: 설계도에 의해 생산된 차
친구 차(friendCar)🚙: 설계도에 의해 생산된 또 다른 차
즉, 자동차 인스턴스는 모두 위와 같은 필드와 메소드를 가짐
하지만 각 인스턴스마다 가지고 있는 프로퍼티의 값은 전부 다름
접근제어자
: 해당 메소드에 접근할 수 있는 범위를 명시
반환 타입
: 메소드가 모든 작업을 마치고 반환하는 데이터 타입을 명시
메소드 이름
: 메소드를 호출하기 위한 이름을 명시
매개변수 목록(parameters)
:
메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시
구현부
: 메소드의 고유 기능을 수행하는 명령문의 집합
자바에서는 하나의 클래스에 같은 이름의 메소드를 둘 이상 정의할 수 없음😕
하지만 메서드 오버로딩 overloading
을 이용하면,
같은 이름의 메서드를 중복해서 정의 가능😉
메서드 오버로딩이란 매개변수
나 타입
을 다르게 하여
같은 이름의 또 다른 메서드를 작성
이러한 메서드오버로딩
을 사용함으로서 메서드에 사용되는 이름을 절약가능!
또한, 메서드를 호출할 때 전달해야 할 매개변수(파라미터)의 타입이나 개수에 대해 크게 신경쓰지않고 호출할 수 있게 됨.