클래스, 인스턴스, 지역 변수

Jonny·2022년 2월 13일
0

클래스와 객체

목록 보기
10/10

1. 객체지향 : Object Oriented Programming (OOP)

  • 객체 : 우리 주변의 모든 것. 고유한 특성과 기능을 가지고 있다.

  • 객체지향 : 실세계의 객체를 프로그램내에 표현하기 위해 클래스와 객체 개념을 도입한 것.

    • 특징
      1) 코드의 재사용성이 높다 : API 사용
      2) 코드관리가 쉽다 : 상속, 다형성, 추상화, 캡슐화 등등
      3) 신뢰성이 높은 프로그램 개발 가능
  • 캡슐화 : encapsulation : 자바가 지향하는 코드 스타일

  • 상속 : inheritance, 부모가 자식에게 가진 것들을 물려주는것.

  • 다형성 : polymorphism
    - 상속관계에서 성립
    - 같은 이름의 메서드가 클래스나 객체에 따라
    - 기능이 다르게 동작하도록 구현되는 것을 말함.

  • 절차지향 : 순서대로 진행되는 코드방식(급식실?)

  • 객체지향 : 부품처럼 서로 상호작용하며 진행되는 방식

2. 클래스와 객체

1) 클래스 (설계도)

  • 객체를 정의해 놓은 것.
  • 용도 : 객체를 만들기 위한 것.

2) 객체

  • 실제로 존재 하는 것. (사물,개체 등)
  • 클래스 모양 그대로 생성된 실체
  • 붕어빵 (빵틀로 만든...)

3) 객체와 인스턴스

  • 객체 == 인스턴스

4) 객체 (속성 + 기능)

  • 속성과 기능을 멤버라 부른다.
  • 속성 : 멤버변수, 필드
  • 기능 : 메서드

5) 인스턴스(객체) 생성과 사용

  • 순서 : 클래스(설계도 만들기) -> 객체 생성 -> 사용
		# 클래스 구조
		class 클래스명 {
			변수 (속성, 필드)
			메서드
		}
  • 클래스명은 대문자로 시작, 숫자로 시작 안됨, 띄어쓰기 안됨.
  • 특수문자 _ $ 가능
  • 패기지 안에 이름은 한개만 존재하게

6) 인스턴스(객체) 생성

		#선언
		클래스명 참조변수명;
		scanner sc;
		#생성
		참조변수 = new 클래스명();
		sc = new Scanner(System.in);
		#줄여서
		클래스명 참조변수명 = new 클래스명();
		Scanner sc = new Scanner(System.in);
  • 참조변수 (레퍼런스 변수) : 객체를 가르키는, 객체의 주소(레패런스)를 담고 있을 변수
  • 객체 생성전, 참조변수 먼저 선언만 하면 모리에 아직 객체가 생성되어 올라간것이 아니다.
  • 주소 담을 수 있는 변수만 만들어 놓은 것.

* new : 새로운 클래스 모양의 메모리를 새로 점유시키는 중요한 키워드

7) 객체 멤버(변수 or 메서드)에 접근 : 점(.) 연산자를 사용

		sc.nextLine();
  • 정리

    • 클래스 == 사용자 정의 데이터 타입 (내맘대로 정의 가능함)

    • 기본형 : 메모리 양이 정해진 것

    • 참조형(클래스) : 개발자가 필요한 만큼 메모리를 직접 지정해서 만든 것.

    • 클래스 : 유사한 특성을 지난 객체들의 "속성"과 가능을 묶어놓은 집합

    • 객체 : 실제 존재하는 object 들을 말함.

3. 변수의 종류

  • 선언 위치(어디서 변수가 만들어 졌느냐)에 따라 변수의 종류와 성질이 달라짐.
    (데이터 타입에 따라 기본형, 참조형으로 구분)

1) 클래스 변수

  • 클래스 안에서 생성
  • 이름 앞에 static 붙는다.
  • 종류 : 클래스 기본형 변수, 클래스 참조형 변수
  • 특징
    • 모든 객체들이 공유하는 변수
    • 가장 먼저 생성됨. new로 객체생성 하지 않아도 바로 사용 가능.
  • 접근법
    • 클래스명.클래스변수명 (이 형태로 사용하는것이 안헷갈리고 좋다)
    • 참조변수명.클래스변수명 (객체 생성한 경우)
  • 유효기간
    • 프로그램 시작 ~ 프로그램이 종료 될 때

2) 인스턴스 변수

  • 클래스 안에 생성
  • 종류 : 인스턴스 기본형, 인스턴스 참조형 변수
  • 특징
    • 각 객체(인스턴스)마다 개별적인 저장 공간을 갖는다.
    • new를 한 후(객체생성 후) 메모리에 올라가면 사용 가능.
    • 가르키는 참조변수가 없을 경우 가비지컬렉터가 수거함(메모리해제)
    • 또는 프로그램 종료시 소멸
  • 접근법
    • 참조변수명. 인스턴스 변수명
  • 유효기간
    new를 선언한 시점
    ~ 링크가 끊겨서 쓰레기값이 되거나(가비지컬렉터 수거), 프로그램이 종료가 될 때

3) 지역변수

  • 메서드 안에서 생성
  • 종류 : 지역 기본형 변수, 지역 참조형 변수
  • 특징
    • 메서드(조건문, 반복문내)에서 선언된 변수를 가르키며,
    • 메서드 종료시 소멸
  • 유효기간
    메서드안에서 선언시~ 메서드가 종료 될 때

** 메모리 로딩순서

클래스 영역 생성 -> static 실행 -> main 실행 -> new~ instance
   | 클래스 범위 만들고
	      | 메인메서드 포함.메모리에 로딩
	 	         | main이 있으면 실행
			            | new 객체 생성할 때마다 각각 메모리에 로딩	
profile
Jonny의 Java 공부

0개의 댓글