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. 당당
    2023.04.21
  3. 화려하게간다
    java FileWriter에서 close()를 해줘야 하는 이유

    Java FileWriter 클래스는 파일에 문자 데이터를 쓰는 데 사용됩니다. FileWriter 객체를 생성한 후에는 데이터를 쓴 후에 반드시 close() 메소드를 호출해야 합니다.

    close() 메소드를 호출하지 않을 경우, FileWriter 객체는 여전히 시스템 리소스를 점유하고 있게 됩니다. 이 경우, 프로그램에서 사용 중인 메모리나 시스템 자원 등이 계속해서 소모되게 되고, 시스템이 불안정해질 수 있습니다. 또한, FileWriter 객체가 소멸되지 않으면 파일에 쓴 내용이 올바르게 저장되지 않을 수도 있습니다.

    따라서, FileWriter 객체를 사용한 후에는 close() 메소드를 호출하여 파일을 닫고, FileWriter 객체가 소멸되도록 해주어야 합니다. 이를 try-with-resources 구문을 사용하여 자동으로 처리할 수도 있습니다. 이 구문을 사용하면, try 블록에서 FileWriter 객체를 생성하고 사용한 후, 자동으로 close() 메소드가 호출되어 파일을 닫을 수 있습니다.
  4. labis98
    20230202 완료
  5. Min Jupiter
    23.01.17
  6. 개구리
    메소드는 비슷한 코드나 변수를 묶어 만든 것이고
    클래스는 비슷한 클래스를 묶어 만든 것이다.
    이 클래스가 기반이 되어 복제본과 같은 역할을 하는 것을 인스턴스라 한다.
    math.와 같이 바로 사용할 수 있는 클래스가 있는 반면 FileWriter과 같이 인스턴스를 만들어 사용해야 하는 클래스도 있다.
  7. 자바뿌시기
    22.01.05
  8. forrest
    22-11-18
  9. 보통사람 박코딩
    할수있다
  10. 코딩드림
    221104
  11. 코리니
    912
  12. 제이드
    메쏘드: 서로 연관된 코드를 그룹핑해서 이름 붙인 정리 정돈의 상자!
    클래스: 서로 연관된 변수와 메쏘드들을 모아서 이름을 붙인 것
    인스턴스: 하나의 클래스를 복제해서 서로 다른 데이터의 값과 서로 같은 메쏘드를 가진 복제본을 만드는 것.
  13. economin
    수강 완료
  14. 클래스는 비슷한 맥락의 변수,메소드들을 묶어서 그룹핑한것

    인스턴스는 클래스를 복제하여 복제한클래스(인스턴스)에 대해 길고 복잡한 작업을 할때 활용할수있다.
  15. 육도
    2022.05.14 완료
  16. 유도영
    인스턴스는 클래스(변수, 메소드의 집합을 통해 기능함)를 복제하여 해당 클래스의 기능을 기반으로 작동하는 새로운-그러나 복제본인 객체.
    FileWriter f1 = new FileWriter("data.txt");
    따라서 이 코드에서 좌측의 FileWriter는 f1의 타입으로서 쓰여진 것이다.
  17. 열정jk
    220220 감사합니다
  18. 나연
    2022년 2월 13일 (일) 완료

    일회용으로 작업을 끝내면 되는 것들은 메소드나 변수를 클래스에 소속된 그대로 사용
    하지만 긴 맥락을 가지고 작업해야 하는 경우에는 클래스를 직접 사용하는 것이 아니라 클래스를 복제해서 제어함
  19. 김보노
    22-01-26
  20. 주간식당메뉴
    21.11.07.
  21. 성치
    2021-10-25일 완료
  22. 2021.09.01 완료
    인스턴스는 클래스(변수+메쏘드의 집합체)를 복사한 후 새로운 이름을 부여하여 선언한 것
  23. 이마누
    완료
  24. labis98
    20210812 good!!!
  25. 무성
    System.out.println() 에서 System 은 앞에서 말했듯이 class 입니다.
    여기서 out 은 printStream 이라는 클래스의 객체로써 static 변수 입니다.
    printStream 클래스는 System 클래스 안에 존재하는 Inner 클래스이며,
    이 printStream 클래스의 메소드 중 하나가 println 입니다.
  26. super1Nova
    210807
  27. 코딩하는 배달이
    클래스는 붕어빵기계, 인스턴스는 붕어빵
  28. Jaemin Lim
    21.07.25
  29. Mark Kim
    July 15 2021
    제가 이해하는 객체지향적 프로그래밍이란
    쉽게 말해서 비행기를 만들 때 설계도 상에서 담당하는 기능별로 파트를 나누어서
    변경하고 싶은 기능이나, 유지보수가 필요할 때
    쉽게 접근하고 변경할 수 있도록 도와주는 개념입니다.
    따라서 라이브러리, 모듈도 어떻게 보면 일종의 객체라고 말할 수 있습니다.
  30. 초딩 개발자
    2021/06/26
  31. 손혜미
    클래스는 변수와 메소드를 담은 상자. 아직까지는 변수, 메소드의 상위 개념이라는 생각밖에는 안 든다.
    Math는 일회성으로 사용하고 FileWriter같이 복제해서 쓰는 클래스는 맥락이 긴 곳에 사용한다고 했는데, 아직 그렇게 맥락이 긴 코드나 프로그램을 본 적이 없어서 이게 얼마나 중요하고 유용한지 실감이 잘 안 된다.
  32. 05.02 Class & Instance
    짧은 생각 : 자바에서 프로그래밍을 할 때 일회성으로 사용하고 끝내는 건 Class 변수를 사용한다. 추후에 Edit 할 필요가 있는 친구들은 Instance 변수로 사용한다. FileWriter 라는 클래스를 열어보면 안에 public 을 접근자로 갖는 멤버들이 많이 있네요. FileOutputStream 라는 부모 클래스를 super 로 상속하면서 여러가지 일을 하고 있네요.

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

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

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

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

    객체지향 프로그래밍 : Class 와 Instance 라는 구조화된 객체들을 성 처럼 쌓아 프로그램을 만드는 기법.
    Class : 서로 연관된 Method와 Variable를 정리 정돈하여 객체화 한 것으로 일회성으로 사용.
    Instance : 객체화 된 Class를 이용하여 서로 다른 Data를 가진 서로 같은 Method를 복제하여 사용.
  34. anya422
    done...
  35. 이현수
    2021.04.17
  36. 레이
    2021.04.14
  37. chimhyangmoo
    21.04.09
  38. 비더베스트
    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) 사용되는게 약간 의문이네요. 인스턴스를 만드는 문법이겠죠?? 아무튼 좋은 강의 감사드립니다 !!^^
  39. 김우중
    감사합니다
  40. boat
    절차지향프로그래밍: 자바에서 메소드라 불리는 것을 이용하여 프로그램을 정리정돈 하는 것
    객체지향프로그래밍: 연관된 메소드와 변수를 그루핑하여 정리정돈하는 것(클래스이용)
    클래스: 연관된 변수+메소드를 묶은 것
    인스턴스: 어떤 상태를 가지고있는 클래스의 복제본을 변수에 담은 것. 데이터타입은 클래스의 이름이다.
    math와 같은 클래스는 클래스 내부의 변수나 메소드를 바로 사용할 수 있지만, FileWriter와 같은 클래스는 인스턴스라는 복제본을 만들어 상태를 저장해야한다.
  41. Hodu
    세번째 시청후 드디어 깨달았다!!!!!!!!!!!!!!!!!!!!
  42. 준Fe
    20210116
  43. 자바보
    class는 프로그램에 내장된 규칙
    instance는 사용자들이 만들어가는거
  44. max2021
    f1,f2가 인스턴스
    System, Math, FileWriter등이 클래스입니당
  45. oyuiw
    20201213
  46. 제예솔
    이고잉님의 강의로 지반을 다지고 다른분들 댓글로 완벽하게 이해할 수 있었습니다, 감사합니다!
  47. 안광민
    method = function = subroutine = procedural이라고 불린다.
    method를 이용해 프로그램을 만든다. 이것이 절차지향 프로그래밍이다.

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

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

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

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

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

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

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

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

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

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

      FileWriter f1 = new FileWriter("data.txt");
      == FileWriter 라는 설계도로 만든 f1이란 결과인 객체를 data.txt라는 곳에 넣어서 보여줄것이다.(객체선언)
      == FileWriter라는 설계도로 만든 결과물인 f1을 만드는 코드
    graphittie 자세히 보기