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. yechubot
    class, instance.

    class - class 하나만을 사용해야 하는 경우, 안에 값이 다른 경우 계속해서 다시 써줘야 한다. 효율적이지 못하다.
    instance- class 를 복제한 것으로, new를 붙여서 만들어준다 인스턴스는 클래스와 달리 독립적인 형태로 존재하기 때문에 필요한 것을 독립적으로 갖다 쓸 수 있다. 효율적이고, 코드가 보다 깔끔해진다.
    또한, 인스턴스를 쓸 때는 static을 없애줘야 한다. static은 class의 경우에만 쓴다.
  2. Jimin Joo
    클래스를 복제해서 이름을 붙인것이 인스턴스, 인스턴스에 살짝 변화를 줌으로써 훨씬 더 간편하게 코드를 작성할 수 있음.
    단, 해당 클래스에 static은 없어야함.
  3. hyuna lee
    감사합니다. delimiter가 클래스 소속일때는 매번 바꿔주어야 하는데, 인스턴스에서는 delimiter값만 바꿔서 얼마든지 여러개로 복제할 수 있겠네요.
  4. 빽토리얼
    인스턴스를 활용할 시 효용은 간단하다. 하나의 클래스를 여러가지 인스턴스로 복제해서 같은 메서드를 다른 매개변수를 넣으면서 값을 고정시킬 수 있다. 하나의 클래스에 돌려막기를 시도하면 계속 매개변수의 값을 바꿔줘야하기 때문에 상당히 불편한데 이를 방지할 수 있다.
    실 비유를 하자면 런닝머신이 있다고 할 때 하나만 있다면(class) 이를 돌려막기하면서 각 사람마다 달리기 속도, 운동 시간 등을 계속 바꿔줘야 하지만 여러 대의 복제된 런닝머신이 있다면(instances) 이를 사용하는 각 사람에 맞춰서 달리기 속도 및 운동 시간 등을 고정시켜 활용할 수 있기 때문에 번거롭게 세팅을 다시 할 필요가 없는 것이다.
  5. 넘무
    전공수업보다 코딩수업이 재미있어지기 시작합니다..
    큰일인건가??
  6. 김시은
    인스턴스와 클래스의 차이, 그리고 인스턴스의 효용?
    클래스는 그냥 자기 자신 그 자체이다.
    인스턴스는 클래스의 복제본이다.
    인스턴스는 기본적으로 클래스가 가지고 있는 의미 덩어리를 그대로 가지고 있다.
    인스턴스에서 어떠한 꾸밈을 추가하면, 해당 인스턴스는 클래스의 덩어리를 가짐과 동시에 자신만의 꾸밈을 받게 된다.
    각각의 인스턴스는 공통적으로 같은 클래스의 덩어리를 갖지만, 동시에 각자 다른, 각양각색의 꾸밈을 갖는 것이다.
    각자의 꾸밈은 해당 인스턴스에만 적용된다. 어떤 인스턴스에서 어떠한 꾸밈을 추가하더라도, 클래스 자체는 그대로 유지된다.
    어떤 꾸밈을 한 번 더 사용하고 싶을 때 인스턴스를 사용하면 , 코드의 반복을 줄일 수 있다. 따라서 클래스만 사용했을 때보다 훨씬 더 효율적으로 코드를 작성할 수 있다.
  7. jajavava
    인스턴스는 클래스의 복제본이다.
    클래스 내 중복된 코드를 줄이고, 알아보기 쉽게 하기 위해서 인스턴스를 만든다.
    인스턴스는 new를 붙여 만들고 안의 코드를 다르게 할 수 있다.
    이렇게 인스턴스를 사용하는 클래스의 메소드는 static을 빼야한다.
  8. 홀리
    클래스는 여러개의 변수와 메소드가 담긴 상자. 근데 원하는 값에 따라 그 변수와 메소드에 넣어야 하는 데이터, 값이 달라야 하는데 그럴 때 유용하게 쓰이는 것이 인스턴스
    사용 방식, 형태는 같지만 값을 달리 하기 위해 인스턴스 복제본을 만들어 각기 다른 값을 부여하는 것

    이라고 이해했는데 맞을까요. 감자맛님 댓글에 '같은 기능을 가지고 있으나 수치가 다른 각각의 개체로 사용할 수 있다.' 부분을 보니 이해가 잘 되네요. 감사합니다.
  9. 2020.03.15 완료
  10. 용자
    오오.. 감자맛님의 비유 감사합니다.
  11. 감자맛
    여러 대의 냉장고를 만들어 사용한다고 생각해보자.
    설계도(클래스)의 어떤 수치를 변경하게 되면, 만들어진 다른 냉장고의 해당 수치 또한 변경되어 생산된다. (e.g.: 설계도 상의 손잡이 크기를 바꾸면, 이후 만들어지는 모든 냉장고의 손잡이 크기가 바뀌어 생산된다.)
    그러나 설계도를 바탕으로 이미 생산된 냉장고 한대(인스턴스)의 손잡이 크기를 바꾼다고 생각해보자. 다른 냉장고에는 전혀 영향이 가지 않는다.
    이렇듯, 각각의 객체를 개별적으로 컨트롤 하기에 용이하다.
    대화보기
    • 감자맛
      클래스 : 원안 ( 설계도 )
      인스턴스 : 생산물 ( 고유 정체성을 가져서 식별됨 )
      클래스를 복제하여 각각의 인스턴스로 구별하여 활용하면
      번거로운 수정 없이 각각의 개체를 관리하기에 용이하다.
      같은 기능을 가지고 있으나 수치가 다른 각각의 개체로 사용할 수 있다.
    • ㄱㅎㅈ
      import java.io.IOException;
      이 코드가 들어가야 오류가 나지 않습니다.
    • 라또마니
      클래스 : 사람

      인스턴스: 이기호, 박정운, 유재석, 이문세, 레오나르드 디카프리오, 로버트 다우니 주니어, 왕조현
    • 먼지
      자동차에 비유하자면

      클래스 : 같은 내용의 변수나 함수를 반복해서 쓰지 않기 위함
      -> 클래스를 활용하면 흰색 자동차를 100개와 같이 '많이 만들기'가 쉬워짐

      인스턴스 : 클래스를 기반으로 생성된 여러개의 인스턴스들은 각기 다른 재료로 채울 수 있음
      -> 인스턴스를 활용하면 흰색자동차 100개, 빨간색 자동차 100개, 검정색 자동차 100개 와 같이 '다양한 색'의 자동차를 많이 만들기 쉬워짐
    • 이기호
      클래스를 생성하고 그 클래스를 통해 인스턴스를 복제(?)를 하게 되면 정리가 코드의 정리가 간결해지고 효율적으로 유지보수를 할 수 가있다. 라고 정의가 되어지는데 아직 좀 더 봐야할 것 같습니다. 감사합니다^^
    • 쑤우
      수강완료. 감사합니다~~
    • 박정운
      1. 클래스란?
      - 동일한 컨샙을 공유하는 기능들을 한 데 모은 것

      2. 클래스와 인스턴스의 차이점
      - 클래스는 한 번에 한 개의 변수만을 다룰 수 있습니다. => 다른 변수를 사용하려면 기존 변수를 없애야 합니다.
      - 인스턴스는 클래스를 변수별로 복제함으로써 여러개의 변수를 동시에 다룰 수 있습니다.
    • 허공
      (1) 인스턴스는 클래스의 복제본이라고 비유할 수 있다. (2) 어떤 클래스를 인스턴스화 해서 사용하려면 그 클래스의 멤버들(변수, 메소드)에 붙은 (클래스의 소속임을 정의하는) static을 지워줘야 한다. (3) 인스턴스 사용 시, 기존 클래스는 건드리지 않으면서 각각의 인스턴스 내에서 원하는 데이터 부분을 변경할 수 있다. 코드의 중복을 줄임으로써 코드를 훨씬 더 깔끔하게 정리정돈 할 수 있다.
    • 정중사
      인스턴스를 통해서 반복되던 명령들을 메소드에 담고담고 또 다른 클래스로 쪼개고쪼개고 점점더 단순한형태로 변해요! 그런데, 너무 추상적이어서 제 머리속이 점점 더 복잡해져요. ㅠㅠ 저는 익숙해지는데까지 시간이 좀더 필요할 거같아요.
    • 정이사
      클래스를 기반으로 인스턴스를 생성할 수 있다.
      인스턴스를 사용하면 매개변수를 바꿀 때 마다 다시 설정하지 않아도 된다. 인스턴스는 클래스의 매개변수 별로 설정할 수 있기 때문. 이 떄문에 인스턴스는 사용하려는 매개변수가 다양할 경우 편리하게 사용될 수 있다.
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기