
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 ---- * 아반떼 * 블랙 * 세단 */ } }