JAVA 객체지향 프로그래밍

남의 클래스 & 남의 인스턴스

수업소개

나의 클래스, 나의 인스턴스를 만들기 전에 남의 클래스, 남의 인스턴스를 사용하는 법을 먼저 알아봅시다.

 

 

 

강의

소스코드

OthersOOP.java

import java.io.FileWriter;
import java.io.IOException;

public class OthersOOP {

    public static void main(String[] args) throws IOException {
		// class : System, Math, FileWriter
		// instance : f1, f2
		
		System.out.println(Math.PI);
		System.out.println(Math.floor(1.8));
		System.out.println(Math.ceil(1.8));
		
		FileWriter f1 = new FileWriter("data.txt");
		f1.write("Hello");
		f1.write(" Java");
		
		
		FileWriter f2 = new FileWriter("data2.txt");
		f2.write("Hello");
		f2.write(" Java2");
		f2.close();
		
		f1.write("!!!");
		f1.close();
	}

}

 

댓글

댓글 본문
  1. 코딩하는 배달이
    클래스는 붕어빵기계, 인스턴스는 붕어빵
  2. Jaemin Lim
    21.07.25
  3. Mark Kim
    July 15 2021
    제가 이해하는 객체지향적 프로그래밍이란
    쉽게 말해서 비행기를 만들 때 설계도 상에서 담당하는 기능별로 파트를 나누어서
    변경하고 싶은 기능이나, 유지보수가 필요할 때
    쉽게 접근하고 변경할 수 있도록 도와주는 개념입니다.
    따라서 라이브러리, 모듈도 어떻게 보면 일종의 객체라고 말할 수 있습니다.
  4. 초딩 개발자
    2021/06/26
  5. 손혜미
    클래스는 변수와 메소드를 담은 상자. 아직까지는 변수, 메소드의 상위 개념이라는 생각밖에는 안 든다.
    Math는 일회성으로 사용하고 FileWriter같이 복제해서 쓰는 클래스는 맥락이 긴 곳에 사용한다고 했는데, 아직 그렇게 맥락이 긴 코드나 프로그램을 본 적이 없어서 이게 얼마나 중요하고 유용한지 실감이 잘 안 된다.
  6. 05.02 Class & Instance
    짧은 생각 : 자바에서 프로그래밍을 할 때 일회성으로 사용하고 끝내는 건 Class 변수를 사용한다. 추후에 Edit 할 필요가 있는 친구들은 Instance 변수로 사용한다. FileWriter 라는 클래스를 열어보면 안에 public 을 접근자로 갖는 멤버들이 많이 있네요. FileOutputStream 라는 부모 클래스를 super 로 상속하면서 여러가지 일을 하고 있네요.

    조금 더 찾아보니, static 은 프로그램이 실행되고 종료되는 시점까지 메모리를 할당하며, instance 는 실행되는 순간에 메모리 할당 후 해당 블록이 끝나면 가비지 컬렉터에 의해서 삭제되는 것 같습니다. new 라는 명령어를 통해서 인스턴스 메소드를 사용할 수 있으며, 효율적인 메모리 할당에 도움을 준다고 일단 메모를 해둡니다.

    구글에서 검색한 결과를 요약해보면, 자바 프로그램은 실행하면 main 을 찾고 static 변수와 메소드를 위해 메모리를 할당하는 작업이 우선됩니다. 프로그램 전반에 걸쳐서 계속해서 참조되어야하는 중요한 것은 static 으로 선언을 해야합니다.

    대신 그때 그때 필요에 따라서 딱 한번만 실행시키면 되는 것은 인스턴스 변수로 쓰는게 더 효율적입니다. 그때 new 라는 명령어를 사용해서 인스턴스 호출 및 초기화를 할 수 있습니다. 이때 메모리는 해당하는 블럭안에서만 할당되며, 블럭이 끝나면 호출된 인스턴스도 사라집니다.

    c 언어에서는 garbage collector 를 따로 작성해줘야하지만, java 에서는 알아서 해주는 것 같습니다. 더 자세한 내용은 강의를 들으면서 단계적으로 정리하겠습니다. 좋은 강의 잘 따라가고 있습니다 !!
  7. jeisyoon
    2020.05.02 Class & Instance - OK

    객체지향 프로그래밍 : Class 와 Instance 라는 구조화된 객체들을 성 처럼 쌓아 프로그램을 만드는 기법.
    Class : 서로 연관된 Method와 Variable를 정리 정돈하여 객체화 한 것으로 일회성으로 사용.
    Instance : 객체화 된 Class를 이용하여 서로 다른 Data를 가진 서로 같은 Method를 복제하여 사용.
  8. anya422
    done...
  9. 이현수
    2021.04.17
  10. 레이
    2021.04.14
  11. chimhyangmoo
    21.04.09
  12. 비더베스트
    System.out.println의 경우는 System 클래스 아래에 out 아래에 println이라는 메쏘드가 속해있는 것 같은데 그럼 out은 System 이란 class 아래 속한 또 다른 class 인건가요? Class 아래에 method와 변수가 속하는데 물론 이게 객체의 전부는 아니라고 하셨지만 궁금하네요.

    그리고 instance에서 FileWriter를 복제해 지정해 주는 것은 이해가 가는데 new FileWriter의 뒤에 있는 ("text.txt")는 왜 f1.save("text.txt") 이런식으로 하지 않고 저렇게 따로 지정해 주는 지도 궁금하네요. 만드는 사람이 알기 쉽게 하기 위해 저런 식으로 만든 것 같긴 한데 instance도 원래는 class 형식이라 class의 문법을 따를 것 같은데 메소드의 형식과 비슷하게 FileWriter(text.txt) 사용되는게 약간 의문이네요. 인스턴스를 만드는 문법이겠죠?? 아무튼 좋은 강의 감사드립니다 !!^^
  13. 김우중
    감사합니다
  14. 절차지향프로그래밍: 자바에서 메소드라 불리는 것을 이용하여 프로그램을 정리정돈 하는 것
    객체지향프로그래밍: 연관된 메소드와 변수를 그루핑하여 정리정돈하는 것(클래스이용)
    클래스: 연관된 변수+메소드를 묶은 것
    인스턴스: 어떤 상태를 가지고있는 클래스의 복제본을 변수에 담은 것. 데이터타입은 클래스의 이름이다.
    math와 같은 클래스는 클래스 내부의 변수나 메소드를 바로 사용할 수 있지만, FileWriter와 같은 클래스는 인스턴스라는 복제본을 만들어 상태를 저장해야한다.
  15. 세번째 시청후 드디어 깨달았다!!!!!!!!!!!!!!!!!!!!
  16. 20210116
  17. 자바보
    class는 프로그램에 내장된 규칙
    instance는 사용자들이 만들어가는거
  18. max2021
    f1,f2가 인스턴스
    System, Math, FileWriter등이 클래스입니당
  19. 20201213
  20. 제예솔
    이고잉님의 강의로 지반을 다지고 다른분들 댓글로 완벽하게 이해할 수 있었습니다, 감사합니다!
  21. 안광민
    method = function = subroutine = procedural이라고 불린다.
    method를 이용해 프로그램을 만든다. 이것이 절차지향 프로그래밍이다.

    class라는 정리정돈 상자를 통해 프로그램을 만든다. 이것이 객체지향 프로그래밍이다.

    짧은 맥락을 가지고 작업하는 경우는 바로 class를 사용한다.
    긴 맥락을 가지고 작업해야 하는 경우에는 class를 복제해서 instance를 만들어서 사용한다.

    완료
  22. 싱와
    객체지향 프로그래밍에서 핵심이 되는것은
    우리가 앞서 공부했던 변수와 메소드, 이것들을 보기 좋게 묶은 클래스라고 할 수 있을것이다.

    이런 클래스들은 단발적이고 일회성으로 쓸 수 있는 것들도 있지만, (Math 클래스 같은)
    긴 호흡으로 계속 클래스들을 소환해서 여러가지 작업들을 해야하는 것들도 있다.

    계속 클래스들을 소환하게 된다면 작업하는 공간은 난잡하게 될 것이고, 알아보기도 힘들고
    수정도 어려울 것이다.

    그래서 긴호흡이 필요한 클래스들은 복제본인 인스턴스를 만들어 쉽게 접근가능하고, 긴호흡에도 편하게 쓸 수 있도록 한다.

    이클립스에서 글자가 파란색으로 색칠되어 있는것들은 클래스고,
    초록색으로 색칠되어 있는것들은 메소드인것을 알 수 있다. (MAC eclipse 기준)
    이것들을 빠르게 알아볼 수 있는 능력을 갖춘다면 빠르게 구조를 이해할 수 있는 능력을 함양할 수 있을 것이다.
  23. 흙윳
    오 이거 보고 이해했어요
    대화보기
    • 선대범
      클래스는 설계도, 객체는 설계도로 구현된 것, 인스턴스는 복제본 또는 일정한 과정을 거쳐 생성된 것

      설계도에는 부품들이 어떤 기능을 갖고 있고 어떻게 작동되는지 표현되있다.

      여기서 부품은 메소드이다. 메소드는 특정한 기능을 하도록 만들어진 것이다. 다른 프로그래밍언어에서는 함수라고도 한다.

      객체는 클래스의 인스턴스이다.
      객체는 부품들을 조합해서 구현한 결과물이다.

      FileWriter f1 = new FileWriter("data.txt");
      == FileWriter 라는 설계도로 만든 f1이란 결과인 객체를 data.txt라는 곳에 넣어서 보여줄것이다.(객체선언)
      == FileWriter라는 설계도로 만든 결과물인 f1을 만드는 코드
    • hyuna lee
      감사합니다^^
    • Jimin Joo
      class는 변수와 메소드를 정리해서 묶어놓은 상자 (System, Math, FileWriter)
      instance는 class를 새로 복제해서 이름을 붙인 상자 (f1, f2)
    • 김시은
      class는 비슷한 맥락의 method와 variable을 정리해서 묶어놓은 것이다.
      class에 .을 찍어서 해당 class가 가지고 있는 method를 사용할 수 있다.
      그런데 이를 여러번 반복해야한다면 매번 특정한 조건을 반복해서 적어야 할지도 모른다.
      그래서 필요한 것이 instance!
      instance는 기본적으로 class의 복제본인데, 추가로 내가 설정해준 설정값을 갖는다.
      instance를 선언하는 것은, datatype이 해당 class인 변수를 선언하는 것과 같다.
    • yechubot
      class- method/ variable 정리 한 것
      method - 함수!
      instance - class를 복제한 값을 가진 것 .. - f1
      FileWriter f1 = new FileWriter (" data.text");
    • 열공하자
      System이 클래스이고 .이후 것들은 System의 메소드들 입니다.
      .out의 메소드 안에 있는 println이라는 메소드를 사용 하겠다는 말 입니다.
      대화보기
      • 열공하자
        대문자가 처음에 붙는 것은 클래스이고, 클래스는 .을 찍어서 안에 있는 메소드를 사용할 수 있다.
        java 내에 있는 클래스는 바로 사용 가능하지만
        없는 클래스들은 import후 사용하여야 하고, new를 붙여 생성한다.
        생성후 클래스 안의 메소드를 사용 가능하다.
      • 위의 예제 Math.PI나 Math.floor() 처럼 1회용으로 작업을 끝내게 되는 상황에서는 클래스 안에 포함된 메소드와 변수를 이용해서 있는 그대로 클래스를 사용한다.

        하지만, FileWriter처럼 어떤 곳에 저장하고, 저장한 곳에 여러줄에 거쳐 write를 해야하는 긴 맥락의 상황에서는 클래스를 직접사용하는 것이 아니라, 클래스를 복제해서 인스턴스를 만들어 제어해야한다.
      • yyrr
        2020.03.15 완료
      • 뉸찡
        2020.03.10
        완료 감사합니다!
      • 감자
        System.out.println에서 System이 Class이고 out도 println을 포함한 여러 메소드를 가지고 있는 Class라고 봐도 되는 건가요?? 제가 잘 이해하고 있는지 궁금합니다.
      • juni
        감사합니다..
      • 베히
        객체 = 오브젝트
        ex) 자동차(객체) -> 자동차를 만드는 설계도(클래스) -> 자동차를 만들어냄(인스턴스) 자동차 car = new 자동차();
      • 라또마니
        감사합니다.
      • 이기호
        감사합니다! 클래스와 인스턴스의 개념을 잡는데 도움이 됩니다.
      • 쑤우
        수강완료. 감사합니다~
      • James
        ㅎㅎ감사합니다
      • 찰느
        감사합니다!!!
      • 허공
        감사합니다!
      • 허공
        감사합니다!
      graphittie 자세히 보기