Java 는 대표적인 객체지향 언어 중 하나이다. 객체지향 언어는 실세계의 객체를 프로그램 내에 표현하기 위해
클래스(Class)
와객체(Object)
개념을 도입하였다.
특징
- 추상화(abstraction)
실제 세상을 프로그래밍으로 옮길 수 있게, 필요한 기능들만 가져와서 단순화- 캡슐화(encapsulation)
보안적인 기능에 도움을 줌, 규칙 정의, 사용 용도 명확히. 안에 있는 값을 노출하지 않음.- 상속성(inheritance)
부모를 지정하고, 부모의 코드를 가져다가 쓸 수 있는 것. 코드의 재사용성- 다형성(polymorphism)
변수가 여러 가지 모습으로 변할 수 있는 것.
- 객체변수란 클래스 내부에서 선언된 변수를 의미한다.
- 객체변수는 객체를 선언하고, 연산자를 이용하여 접근할 수 있다.
- 인스턴스 : 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미
- 객체 : 모든 인스턴스를 대표하는 포괄적인 의미
객체의 구성요소
- 속성(property)
- 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
- 기능(function)
- 메서드(method), 함수(function), 행위(behavior)
클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언 변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
변수(데이터, 속성)와 메서드(행위)를 가지고 있는 집합이다.
클래스는 객체의 모양을 선언한 '틀'이며 클래스 모양 그대로 생성된 '실체(Instance)'가
객체
이다. Java는필드(Field)
와메서드(Method)
를 클래스 내에 모두 구현하므로 캡슐화를 통해 객체 내 필드에 대한 외부로부터의 접근을 제한한다.class 키워드로 정의하고, new연산자를 통해서 인스턴스를 생성한다.
자바는 클래스들의 모임으로 이루어져 있다.
👉 클래스에서 객체를 생성하는 과정을
인스턴스화
라고 하며,
생성된 객체를인스턴스
라고 한다.
- 메소드는 객체 간에 교류되는 프로그램화한 명령 메시지 단위이다. 쉽게 말해 데이터(객체)의 동작 처리 내용을 말한다.
- 클래스 내부에 있는 객체 변수에
.
연산자를 이용하여 접근할 수 있다.
- 메소드의 선언
public class Car { public String name; public int price; public void drive(){ System.out.println("달려요!"); } } --> [접근제한자] [반환형]\[메소드명] ( 매개변수 ) { }
- 접근제한자의 종류
public / protected / default / private
- 클래스는 주로 public 으로 선언되어 패키지 안과 밖에서 모두 접근이 가능하게 한다.
- 속성(멤버변수)은 주로 private 으로 선언되어 외부로부터 데이터 변질을 막는다.
- 🚨 메서드의 반환타입이
void
가 아닌 경우, 구현부 안에return 반환값
이 반드시 포함되어 있어야한다.
- JAVA에서 this 는
객체
,자기자신
을 나타낸다.
this
는 클래스를 기반으로 생성된 인스턴스를 가리키는참조
라는 것이다.
- this를 사용하는 상황
- 클래스의 속성과 생성자/ 메소드의 매개변수의 이름이 같은 경우
- 클래스에 오버로딩된 다른 생성자 호출
- 객체 자신의 참조값을 전달하고 싶을 때
this 사용 예시
//Car.java 파일 package test.main; public class Car { String name; // 자동차 이름 String color; // 자동차 색상 String type; // 자동차 종류(SUV, 세단... 등등) //생성자 public Car(String name, String color, String type) { this.name = name; this.color = color; this.type = type; } } //Main.java 파일 package test.mypac.Car; public class Main { public static void main(String[] args) { //초기 값 설정 Car avante1 = new Car("아반떼", "화이트","세단"); //Car Class 생성 Car avante2 = new Car("아반떼", "블루","세단"); //Car Class 생성 Car avante3 = new Car("아반떼", "블랙","세단"); //Car Class 생성 System.out.println("---- 실행결과 avante1 ----"); System.out.println(avante1.name); System.out.println(avante1.color); System.out.println(avante1.type); System.out.println("---- 실행결과 avante2 ----"); System.out.println(avante2.name); System.out.println(avante2.color); System.out.println(avante2.type); System.out.println("---- 실행결과 avante3 ----"); System.out.println(avante3.name); System.out.println(avante3.color); System.out.println(avante3.type); /** * 실행 결과 * ---- 실행결과 avante1 ---- * 아반떼 * 화이트 * 세단 * ---- 실행결과 avante2 ---- * 아반떼 * 블루 * 세단 * ---- 실행결과 avante3 ---- * 아반떼 * 블랙 * 세단 */ } }