Java #2

황현근·2023년 4월 26일
0

Acorn-Academy

목록 보기
12/28
post-thumbnail

객체지향 프로그래밍

Java 는 대표적인 객체지향 언어 중 하나이다. 객체지향 언어는 실세계의 객체를 프로그램 내에 표현하기 위해 클래스(Class)객체(Object) 개념을 도입하였다.

특징

  • 추상화(abstraction)
    실제 세상을 프로그래밍으로 옮길 수 있게, 필요한 기능들만 가져와서 단순화
  • 캡슐화(encapsulation)
    보안적인 기능에 도움을 줌, 규칙 정의, 사용 용도 명확히. 안에 있는 값을 노출하지 않음.
  • 상속성(inheritance)
    부모를 지정하고, 부모의 코드를 가져다가 쓸 수 있는 것. 코드의 재사용성
  • 다형성(polymorphism)
    변수가 여러 가지 모습으로 변할 수 있는 것.

객체변수

  • 객체변수란 클래스 내부에서 선언된 변수를 의미한다.
  • 객체변수는 객체를 선언하고, 연산자를 이용하여 접근할 수 있다.
  • 인스턴스 : 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미
  • 객체 : 모든 인스턴스를 대표하는 포괄적인 의미

객체의 구성요소

  • 속성(property)
    • 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
  • 기능(function)
    • 메서드(method), 함수(function), 행위(behavior)
클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

Class(클래스)

  • 변수(데이터, 속성)와 메서드(행위)를 가지고 있는 집합이다.

  • 클래스는 객체의 모양을 선언한 '틀'이며 클래스 모양 그대로 생성된 '실체(Instance)'가 객체이다. Java는 필드(Field)메서드(Method)를 클래스 내에 모두 구현하므로 캡슐화를 통해 객체 내 필드에 대한 외부로부터의 접근을 제한한다.

  • class 키워드로 정의하고, new연산자를 통해서 인스턴스를 생성한다.

  • 자바는 클래스들의 모임으로 이루어져 있다.

👉 클래스에서 객체를 생성하는 과정을 인스턴스화라고 하며,
     생성된 객체를 인스턴스라고 한다.

메소드(Method)

  • 메소드는 객체 간에 교류되는 프로그램화한 명령 메시지 단위이다. 쉽게 말해 데이터(객체)의 동작 처리 내용을 말한다.

  • 클래스 내부에 있는 객체 변수에 . 연산자를 이용하여 접근할 수 있다.

  • 메소드의 선언
public class Car {
	public String name;
    public int price;
    public void drive(){
		System.out.println("달려요!");
	}
 }
	--> [접근제한자] [반환형]\[메소드명] ( 매개변수 ) { } 
  • 접근제한자의 종류
public / protected / default / private
  • 클래스는 주로 public 으로 선언되어 패키지 안과 밖에서 모두 접근이 가능하게 한다.

  • 속성(멤버변수)은 주로 private 으로 선언되어 외부로부터 데이터 변질을 막는다.

  • 🚨 메서드의 반환타입이 void가 아닌 경우, 구현부 안에 return 반환값이 반드시 포함되어 있어야한다.

This

  • JAVA에서 this 객체, 자기자신을 나타낸다.

  • this 는 클래스를 기반으로 생성된 인스턴스를 가리키는 참조 라는 것이다.

  • this를 사용하는 상황
      1. 클래스의 속성과 생성자/ 메소드의 매개변수의 이름이 같은 경우
      1. 클래스에 오버로딩된 다른 생성자 호출
      1. 객체 자신의 참조값을 전달하고 싶을 때

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

0개의 댓글