JAVA 객체지향 프로그래밍

인스턴스

수업소개

여러 상태의 클래스가 동시에 필요할 때는 클래스 앞에 new를 붙여서 클래스의 복제본을 만들어서 서로 다른 상태를 유지할 수 있습니다. 클래스의 복제본을 인스턴스라고 합니다. 이 수업에서는 인스턴스가 무엇인지, 인스턴스는 어떻게 만드는지를 소개합니다. 객체지향의 핵심이라고 할 수 있는 수업입니다. 

 

 

강의1

소스코드

변경사항

MyOOP.java

public class MyOOP {
    public static void main(String[] args) {
		Print p1 = new Print();
		p1.delimiter = "----";
		p1.A();
		p1.A();
		p1.B();
		p1.B();

		Print p2 = new Print();
		p2.delimiter = "****";
		p2.A();
		p2.A();
		p2.B();
		p2.B();
		
		
		p1.A();
		p2.A();
		p1.A();
		p2.A();
	}

Print.java 

class Print {
    public String delimiter = "";

	public void A() {
		System.out.println(delimiter);
		System.out.println("A");
		System.out.println("A");
	}

	public void B() {
		System.out.println(delimiter);
		System.out.println("B");
		System.out.println("B");
	}
}

 

 

댓글

댓글 본문
  1. labis98
    20230203 완료
  2. Min Jupiter
    23.01.17
  3. 개구리
    클래스는 말 그대로 하나의 틀로써 근본이 되는 코드나 메소드를 엮어 만들었다면 인스턴스는 그 클래스의 복제본으로써 클래스 안의 변수를 계속해서 새로 정의하며 중복되어야 하는 곳에 대신 들어가 유용하게 쓰일 수 있다. static은.. 아직 뭔지 제대로 감이 안 잡히네요
    아래 댓글들에 회사를 이용한 비유들이 가장 와닿았던 것 같아요 댓글 기능 최고..
  4. 열무
    설명 진짜 잘하시네요ㅎㅎ 이해가 쏙쏙 됩니다
    대화보기
    • 보통사람 박코딩
      할수있다
    • 코딩드림
      221104
    • 꾸준히가답이다
      클래스와 같은 구조로 복제를 하여 독립적인 개념이 된 인스턴스를 활용하게 되면
      기존 클래스와 메서드를 활용해서 주기적으로 반복이 되고 뒤섞여 프로그램이 시행되는 경우
      이를 하나하나 지정해주고, 중복되는 코드가 많았지만

      인스턴스를 사용하게 되면 반복이 되는 하나의 파트에 대해서 독립적으로 지정하게 되면서
      주기적 반복 및 불규칙적인 프로그램을 구성 할 경우에 중복되는 코드 없이 깔끔하게 정리 할 수 있다.
    • 코리니
      912
    • 제이드
      밑 댓글의 비유들 많은 도움이 되네요. 감사합니다.
    • bwtree
      인스턴스 현재 이해한 개념으로는 클론과 같은 듯.
    • economin
      수강완료
    • 하나의 클래스의 상태가 계속해서 바뀌는 복잡한 코드의경우
      클래스를 복제한 인스턴스를 활용하여
      각각의 인스턴스에 값을넣고

      필요한 값에따라서 필요한 인스턴스의 메소드를 호출하면
      더욱깔끔하게 정리가 가능하다
    • 코딩이취미다
      클래스 -> 붕어빵틀
      인스턴스 -> 붕어빵

      static 붕어빵을 만들 준비가 되어 있다 / 없다

      미진한 부분이 있다, 설명을 하면서도 만족 스럽지 않지만
      일단 여기까지...
    • 육도
      2022.05.14 완료
    • 어플리케이션 == 회사
      class A == A직무를 하는 최초의 직원

      회사가 커지면서 직원의 업무량이 너무 많아, 납기 못지키고, 정리가 안되어서 업무가 안될지경이 옴

      회사에서 A직무를 똑같이 수행할 직원(instance)을 고용해줌

      최초의 직원은 승진해서 새로 고용된 직원들이 같은 일을 하도록 가이드만 주게되고,
      새로 고용된 직원들은 이에 따라, 업무를 분장받아 효율적으로 일처리를 하게 됨.
    • 방우
      클래스는 본사
      인스턴스는 대리점 혹은 본사안의 부서같은 느낌

      변경사항이 있을 때 일일이 값을 변경하지 않아도 클래스에서 수정하여 인스턴스에 공통반영하던지
      변경사항에 맞는 새로운 인스턴스를 만들어 반영 및 작업의 강도를 줄일 수 있다.

      클래스처럼 큰 덩어리를 변경하거나 움직이는 것이 아닌,
      보다 작은 복제본인 인스턴스를 만들어서 필요한 작업을 용이하고 빠르게 할 수 있다.

      라는 정도로 이해하였습니다.
    • ColorBlue
      인스턴스는 클래스의 구조를 따서 원하는 상태를 담아낼 수 있도록 객체화하여 사용할 수 있다
      인스턴스의 멤버는 클래스 내부에서 최초 선언시 static을 사용하지 않는다.
      클래스의 멤버는 클래스 내부에서 최초 선언시 static을 사용한다.

      인스턴스를 사용하면 기존 클래스를 사용하는 것에 비해 간결하고 명확하게 코드를 작성할 수 있다.
    • 유도영
      인스턴스는 클래스의 틀을 복제하여 기능은 그대로이되 속성(delimeter)을 바꿔 다른 객체(p1, p2 ..)로 명명해 사용할 수 있는 것이다.
      클래스만 사용했을 때는 delimeter 값이 달라질 때마다 하나의 박스(클래스 print)에 계속 코드를 입력해주어야 했지만
      (그래서 클래스의 정의에서는 public static ~으로 변수를 정의함)
      인스턴스를 사용할 경우 delimeter값에 따른 여러 객체로 나눠 사용하여 중복 작업을 줄일 수 있다.
    • 열정jk
      220220 감사합니다
    • 나연
      2022년 2월 14일 (월) 완료

      질문

      화면 잘라서 캡쳐한 걸 옆에 띄울 수 있게 하는 데스크탑 앱이 무엇인가요?
    • 김보노
      22-01-26
    • 주간식당메뉴
      2021.11.15.
    • everdoit
      클래스 기능만 사용가능했을 때 : 상태의 변경이(delimeter 값 변경) 필요할떄 코드를 중복되게 사용했어야 했다.
      하지만 인스턴스 기능을 사용하면 처음에 한번 상태를 변경한 값이 복제본인 인스턴스에 그대로 남아있어 코드의 중복사용을 줄일 수 있었다. 우선 이정도로 이해한 것 같습니다.!
    • 2021.09.02완료
    • 김김준혁
      설명 굿굿....ㄷㄷ 이해가 한번에 됩니다
      대화보기
      • 이마누
        완료
      • labis98
        20210813 good!!!
      • super1Nova
        210807
      • 이땅콩
        인스턴스와 클래스의 차이 : 클래스는 어떠한 메소드의 가장 뿌리가 되는 코드이다. 즉, 클래스는 가장 근본이 되는 변수와 메소드를 모아놓은 것임. 인스턴스는 그 해당 클래스의 변수와 메소드를 복사해서 쓸 수 있다. 즉, 인스턴스는 클래스의 복사본과 같은 의미이다.

        인스턴스를 썼을 때 효용 : 하나의 클래스로부터 다른 결과를 도출해야 할 때, 클래스를 여러 번 수정하지 않고도 여러 개의 인스턴스를 사용하면, 데이터를 따로 관리하기 쉽고 편안해진다.
      • Jaemin Lim
        21.07.25
        클래스 메소드/변수 : 1회성 사용

        인스턴스 : 클래스를 복제해 사용자화 하여 여러번 사용할수 있게함.
      • CatNoir
        인스턴스는 클래스의 특정 상태를 저장할 수 있다. 덕분에 클래스의 메소드를 사용할 때 마다 상태를 알려주지 않아도 되고 이전에 생성한 인스턴스를 활용하면 된다.
      • 초딩 개발자
        2021/06/26
      • 싸알
        클래스는 관련 있는 변수와 메소드를 모아 놓은 객체
        인스턴스는 클래스의 복제본
        인스턴스를 사용하면 데이터를 따로 관리하기 용이하며 코드의 가독성도 높일 수 있다.
      • 손혜미
        인스턴스는 클래스를 복제해서 독립적으로(?) 기능하는 것.
        인스턴스를 사용하면 코드를 관리하기가 더 쉽고 이해하기도 쉽다.
      • 05.02
        * static 는 클래스 변수이다.
        * instance 는 비-클래스 변수이다.
        * 프로그램 실행 중에 같은 값을 유지해야하는 곳에는 static
        * 가변적으로 원하는 값을 넣어서 계속 수정되는 곳에는 static 을 붙이면 안됨
        * static 은 생성과 동시에 메모리 할당되며 프로그램이 실행되는 중에는 계속 유지
        * instance 는 한번 쓰이고나면 가비지 컬렉터에 의해 사라짐
        * instance 변수가 필요하지 않은 곳에는 static 을 선언한다. 프로그램이 우선적으로 탐색하기 때문에 더 빠르게 실행된다.
        * 사실 좀 작성하다보면 eclipse 가 알아서 수정할 방법을 알려준다. static 을 빼라, 붙여라
        * instance 변수를 생성하려면 new 라는 명령을 사용한다.
        * instance 변수는 new 라는 명령을 통해 생성 및 초기화되어야만 사용할 수 있다.
        * static 은 프로그램 전반에 걸쳐서 동일한 메모리 영역을 사용한다.
        * 어떤 식으로 작성해야 코드가 더 간결하고 낭비가 적을지는 코드를 작성하는 본인이 판단한다.
      • jeisyoon
        2021.05.02 Instance - OK

        Instance 는 Class 를 이용하여 서로 다른 Data로 같은 Method를 사용할 수 있도록 Class를 복제하는 것으로
        코드의 중복을 피하고 다용도로 사용할 수 있도록 하는 것이다.

        Class를 Instance 로 바꿀 때는 Class 내에서만 사용 가능토록 고정으로 정의한 "static"을 Method와 Variable 에서 제거하므로서 Instance 에서 사용 할 수 있도록 한다.

        Class 와 Instance는 객체지향 프로그램(Object Oriented Programming)의 양대 축으로 이를 잘 사용할 줄 아는 것 만이 Java의 중급 개발자가 되는 지름길이라 생각한다.
      • anya422
        done!
      • 이현수
        Class는 속성, 메소드가 지정되있는 곳
        Instance는 class의 속성, 메소드를 그대로 복제하여 자신만의 또 다른 객체를 만듭니다.
        즉 class = 자동차라고 생각했을때,
        자동차의 속성은 색상, 크기 등을 말할 수 있습니다.
        자동차의 메소드는 가속, 감속 등을 말할 수 있습니다.
        객체라고도 불리는 instance는 class의 속성을 가져와 자신만의 이쁜 색상을 고를 수 있으며,
        중형 or 소형 차를 고를 수 있다.
        또한 메소드도 가져올 수 있어서 가속을 하는가 감속을 하는가 할 수 있습니다.
        결론은 class의 기본 속성과 메소드를 그대로 가져와 자신만의 객체를 만드는 것을 instance 라고 합니다.
        현재 컴공과 전과를 준비중인 학생의 개인적인 생각입니다!!!
      • 이현수
        2021.04.17
      • 레이
        21.04.14
      • chimhyangmoo
        21.04.10
      • 김우중
        감사합니다
      • leeniesta
        와 '싱와'님 덕분에 이해 진짜 쉽게 됐습니다!
        감사드려요 ㅠㅠ
        대화보기
        • jason
          클래스 = 메모리시트 없는 자동차
          인스턴스 = 메모리 시트 있는 자동차
          즉 자동차 운전자 1, 2, 3으로 메모리 시트를 저장해 놓으면 필요시 1만누르면 1에 설정된 높이, 앞뒤, 등각도, 핸들등등이 미리 세팅된 운전자 1로 되어 사용할 수 있음.
          근데 요 메모리 시트기능(인스턴스)이 없다면(클래스) 운전자가 바뀔때마다 모두 바꿔줘야하기에 번거럽습니다.
          인스턴스는 미리 설정된(Preset)기능이라고 보면 될 것 같네요.

          결국 이 코드를 가장 효율적으로 사용되는 부분이 아래 인 것 같습니다.
          p1.A();
          p2.A();
          p1.B();
          p2.B();
          p1에 미리 설정된 구분자가 ----인 것
          p2에 미리 설정된 구분자가 **** 인 것을 바로 사용 가능한 것
        • boat
          클래스의 복제본인 인스턴스는 원형인 클래스와 다른 상태를 가지지만 동일한 기능을 수행할 수 있다.
          인스턴스가 클래스의 변수나 메소드를 이용하기 위해선 클래스에서 변수, 메소드 앞에 붙어있는 static을 없애줘야 한다. 이러한 인스턴스를 이용한다면 중복을 방지하여 코드를 훨씬 깔끔하게 만들 수 있다.
          밑에 설명 대박이네요..
        • 율빵
          설명 머선129~
        • 자바보
          대박은 없었다
        • oyuiw
          20201213
        • 제예솔
          어려운걸 어렵다, 이해하기 힘든 것이 당연하다라고 말씀해주셔서 감사합니다 이고잉님!
        • 안광민
          완료
        버전 관리
        egoing
        현재 버전
        선택 버전
        graphittie 자세히 보기