SEB_BE 11일차 - Java 객체지향기초1

subimm_·2022년 9월 2일
0

코드스테이츠

목록 보기
12/83

💡 오늘의 학습목표

  • 객체지향 프로그래밍
  • 클래스
  • 객체
  • 필드
  • 메서드

📔 객체지향 프로그래밍(OOP)

  • 필요한 데이터를 모아 추상화된 객체를 만들고 객체들 관의 협력과 상호작용을 통해 특정 기능을 구성하는 프로그래밍 방법론

  • 객체 - 실재하는 모든 것

  • 클래스 - 객체를 정의한 설계도 또는 틀

  • 인스턴스 - 클래스를 통해 생성된 객체

  • 클래스
    클래스 정의 방법
class 클래스명 { //주로 대문자로 시작
..
}

클래스의 요소

publc class ExClass {
	int x = 10; // 필드
    void printX() {..} //메서드
    ExClass {..} // 생성자
    class ExClass2{..} // 이너 클래스
  1. 필드 : 클래스의 속성을 나타내는 변수 (모델명, 컬러, 바퀴의 수) [멤버]
  2. 메서드 : 클래스의 기능을 나타내는 함수 (시동걸기, 가속, 정지) [멤버]
  3. 생성자 : 클래스의 객체를 생성하는 역할
  4. 이너 클래스 : 내부의 클래스 [멤버]
  • 객체
    속성(필드)과 기능(메서드) 으로 이루어져 있다.
    객체 생성 방법
    new 키워드로 생성 , 생성 후에 .연산자로 해당 객체의 멤버에 접근 가능
 클래스명 참조변수명; // 인스턴스를 참조하기 위한 참조변수 선언
 참조변수명 = new 생성자();// 인스턴스 생성 후, 객체의 주소를 참조변수에 저장
 // 생성자() - 클래스와 같은 이름이지만 소괄호가 붙음

줄여서 선언 가능

class Car {
	public static void main(String[] args) {
    Car kia = new Car(); // Car 클래스를 기반으로 생성된 kia 인스턴스
    Car audi = new Car(); // Car 클래스를 기반으로 생성된 audi 인스턴스
}
  • 참조 변수 - 실제 데이터가 위치해있는 힙 메모리의 주소
  • 객체 생성 - 해당 객체를 힙 메모리에 넣고 그 주소값을 참조변수에 저장
  • 같은 클래스로 만든 모든 객체는 동일한 메서드 값 공유
    (한번만 저장해두고 필요한 경우 클래스 영역에 정의된 메서드 사용)
  • 객체의 활용
    객체에 접근하고 사용할 때는 . 포인트 연산자
참조 변수명.필드명 // 필드값 불러오기
참조 변수명.메서드명() // 메서드 호출



  • 필드
    클래스에 포함된 변수 (객체의 속성 정의)

    자바에서 변수

    필드 변수
    직접적을 초기화를 해주지 않아도 강제로 초기화

    • 클래스 변수 (cv) static 과 함께 선언
      공통된 저장공간 공유
      한 클래스로부터 생성되는 모든 인스턴스들이 특정 값을 공유해야하는 경우
      클래스명.클래스변수명 으로 사용 가능
    • 인스턴스 변수 (iv)
      인스턴스가 가지는 각각의 고유한 속성을 저장하기 위한 변수
      new 생성자() 로 인스턴스가 생성될 때 만들어진다.
    • 지역 변수 (lv) : 메서드 내에 포함된 모든 변수
      메서드 내에서 {} 블록 안에서만 사용 가능
class Example { //클래스 영역
	int instanceVariable; // 인스턴스 변수
    static int classVariable; // 클래스 변수(static 변수, 공유변수)
    
    void method() { //메서드 영역
    	int localVariable = 0; // 지역 변수 {}블록 안에서만 유효
    }
}
  • static 키워드
    클래스의 멤버(필드, 메서드, 이너 클래스) 에 사용
    정적 멤버 - static 키워드가 붙은 멤버
    인스턴스의 생성 없이 클래스명.멤버명 으로 사용 가능
public class StaticTest {
	public static void main(String[] args) {
    	Static Example staticExample = new StaticExample();
        System.out.println("인스턴스 변수: " + staticExample.num1); // static키워드가 없는 인스턴스 변수
        System.out.println("클래스 변수: " + staticExample.num2);// static 키워드가 있는 클래스 변수
    }
}
class StaticExample {
	int num1 = 10;
    static int num2 = -10;
}
// 출력
인스턴스 변수: 10
클래스 변수: -10
  • 객체 간 공유 변수의 성질
    값 공유


  • 메서드
    특정 작업을 수행하는 일련의 명령문들의 집합
    메서드명은 소문자로 시작
자바제어자 반환타입 메서드명(매개변수) { //메서드 시그니처
	메서드 내용 // 메서드 바디
}

예시

public static int add(int x, int y) { 
	int result = x+y;
    return result;
}

메서드의 반환타입이 void 가 아닌 경우에는 바디 안에 반드시 return문이 존재

void printHi() { //반환타입이 void인 메서드
	System.out.println("Hi!");
} //반환값이 없는 메서드
int getNumFive() { //매개변수가 없는 메서드
	return 5;
} 
  • 메서드의 호출
    클래스 외부에서 메서드를 사용하기 위해서 먼저 인스턴스 생성
    .를 통해 메서드 호출 가능
    클래스 내부에 있는 메서드끼리는 따로 객체 생성하지 않아도 호출가능
메서드명(매개변수1,..) //메서드 호출

int add(2,4); // 6 출력
  • 메서드 오버로딩
    하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것

    메서드 오버로딩이 되는 조건

    1. 같은 이름의 메서드명
    2. 매개변수의 개수나 타입이 다르게 정의

회고

오늘은 자바의 객체지향에 대해 학습했다. 개념들이 어려워서 이해하기가 좀 어려웠지만 한 번 학습하고 라이브세션에서 또 들으니 조금 이해가 되어가는것 같다. 주말에 강의도 좀 찾아보고 반복문 조건문 심화학습도 해야겠다. 일주일이 너무 금방 지나간 느낌이다ㅠ

profile
코린이의 공부 일지

0개의 댓글