전공자인 입장에서..(물론 저도 하찮은 학생에 불과하지만 ^^) 격려 섞인 조언을 하나 해드리면 프로그래밍에 그나마 쉽게 다가갈 수 있는 길은 영어와 친숙해지는 것이라고 생각합니다. 예로 Instance를 만들어내기 위해 "static"을 지워야한다고 하죠. 그 이유는 static의 뜻을 알면 바로 해결이 됩니다. static이란 "고정된" 정도로 해석할 수 있는데요, 즉 변화를 주는 것(다양한 변이)을 막는 브레이크의 역할입니다. 그래서 브레이크를 빼야 차가 움직일 수 있는 것처럼, static을 빼야 변이를 만들 수 있습니다. 앞으로 혹시 막히는 부분이 생기신다면 그 단어, 문장을 이해해보시면 해결의 실마리를 얻을 수 있으실 거예요~ 다들 즐거운 코딩되세요.
클래스는 주제에 맞는 기능들을 몽땅 모아 놓은 것이라고 생각하고 인스턴스는 그런 것을 변수화 한거라고 생각합니다. 인간을 예로 들 수 있습니다. 손, 발, 눈, 등 여러가지 몸의 부분들이 합쳐져서 "인간"을 구성합니다. 이런 손, 발, 눈을 메서드라고 할 때 "인간"이라는 틀을 "클래스"라고 볼 수 있을 것 같아요. 이런 "인간"을 가지고 여러명의 "인간"을 만들 수 있습니다. 철수,영희, 강수,,,등등 각자 인간은 맞지만 몸의 부분들이 조금씩 다릅니다. 인스턴스는 인간이라는 공통점을 가지고 여러명의 사람을 만드는 것이라고 생각할 수 있습니다. 추상화라는 개념이 이런거인듯 합니다. 여러가지 흩여져있던 모호한 개념들을 하나로 모아서 하나의 "객체"로 만드는 겁니다. 흩어져있던 손, 발, 눈이라는 메서드를 합쳐서 "인간"이라는 어떤 "객체"를 만든 것처럼요.
클래스와 인스턴스의 차이 클래스 : 라면 끓이는 법 인스턴스 : 내 입맛에 맞는 라면 레시피(예를 들면 순두부라면, 해물라면, 계란라면 등등) 인스턴스의 효용 누군가 만들어놓은 라면 끓이는 법이란 클래스로 손쉽게 라면을 끓일 수 있지만, 이것에 만족하지 못하고 클래스를 호출한 상태에서 나의 욕구대로 마음껏 클래스를 조작하여 원하는 방향으로 결과를 얻을 수 있는 것 + 가독성, 중복 제거 등은 보너스 이게 맞나요? 스프링 공부하려다가 다시 기초부터 배워갑니다
클래스와 인스턴스의 차이는, '클래스가 붕어빵 틀' 이라면 '인스턴스는 거기서 찍어서 나와진 붕어빵 각각' 이다. 서로 연관된 멤버들(변수,메소드 등 여러 기능들)을 담고 있는 클래스는 그 자체로 '원형,원본,원조'라면, 이 클래스를 필요할 때 마다 매번 복제해서 '다른 데이터를 집어넣고 다르게 활용할 수 있는 복제본'이 인스턴스인 것이다. 이 인스턴스를 만들고 사용할 수 있게 되면서 이전에 클래스안의 기능을 사용하기 위해 매번 같은클래스명과 같은 멤버를 반복적으로 호출하여 (돌려막기식으로)사용했어야 했던 것과는 달리, 클래스 복제본인 인스턴스를 여러 개 생성하고 각각의 인스턴스마다 (사용자가 필요한/혹은 넣고싶은) 다른 내용들을 넣어 사용할 수 있게 되었다. 감사합니다 :)
Class는 속성, 메소드가 지정되있는 곳 Instance는 class의 속성, 메소드를 그대로 복제하여 자신만의 또 다른 객체를 만듭니다. 즉 class = 자동차라고 생각했을때, 자동차의 속성은 색상, 크기 등을 말할 수 있습니다. 자동차의 메소드는 가속, 감속 등을 말할 수 있습니다. 객체라고도 불리는 instance는 class의 속성을 가져와 자신만의 이쁜 색상을 고를 수 있으며, 중형 or 소형 차를 고를 수 있다. 또한 메소드도 가져올 수 있어서 가속을 하는가 감속을 하는가 할 수 있습니다. 결론은 class의 기본 속성과 메소드를 그대로 가져와 자신만의 객체를 만드는 것을 instance 라고 합니다. 현재 컴공과 전과를 준비중인 학생의 개인적인 생각입니다!!!
클래스와 인스턴스에 대해서 저는 하나의 '글'로 비유를 하고 싶습니다. 비유란것이 선생님의 말씀처럼 비유를 듣는자에게는 많은 생각을 들게끔 하겠지만, 그래도 의견을 이야기함에 있어서는 하나의 좋은방법이란 생각도 들기때문인데요. 글에는 서론-본론-결론에 대한 틀이 있죠. 이 형식 자체는 추상적이며, 글도구의 틀입니다. 그 틀을 이용하여 써내려갈수있는 글은 무궁무진하죠. 이처럼 하나의 글(클래스)를 이용하여 다양한 주제의 글(인스턴스)을 클라이언트, 소비자에게 맞추어 사용하는 것이라 생각합니다 -!
static메소드는 클래스에 속하는 메소드이기때문에 다른 클래스에 상속이 불가능하다. (print라는 클래스에서 static메소드를 사용하면 print라는 클래스안에서만 메소드 사용가능) 즉, 인스턴스를 생성할때는 static클래스에 있는 메소드는 쓸 수가 없기때문에, static 코드를 지워줬다! 그러면 print 클래스에 있는 A()와 B()라는 메소드를 MyOOP라는 클래스에서 인스턴스로 재정의 할 수가 있다.
클래스를 왜 인스턴스를 해야 할까? 클래스를 여러번 반복적으로 다른 입력값으로 사용해야 한다는 상황일 때. 클래스가 하나밖에 없다면: 나의 코드는 클래스 내용1 클래스 내용 2 클래스 내용 1 클래스 내용 3 클래스 내용 4 클래스 내용 1 이렇게 같은 클래스로 쭈욱 써야 한다. 그렇게 되면 매번 클래스 내용을 계속 바꾸어 주기도 해야 하고 읽기에도 불편하다. 하지만 클래스를 복사해서 클래스 1에 내용 1 클래스 2에 내용2 이런식으로 담게 되면. 클래스1 클래스2 클래스3 이런 식으로 볼 수 있게 됨으로 내용도 편하게 바꿀수 있고 읽는 것도 쉽다. 오늘 같이 배운 예제를 다시 복습하자면: 프린트 클래스에는 메소드가 2개 있고 메소드 A와 B가 있다. 인스턴스를 사용하지 않았을 경우에는. 메소드 안에 들어갈 입력값을 쭈욱 리스트 처럼 실행되는 시간에 따라 순차적으로 바꾸어 줘야 했다. 인스턴스를 사용한 이후에는 딜리미터의 내용에 따라 코드를 정리 할수 있었다.
인스턴스를 사용하면, - 말그대로 인스턴스이기 때문에 각각의 목적과 기능에 맞게 커스텀할 수 있다는 장점이 있다. -> 동영상에서 delimiter를 ----, ****로 구분지었듯이 - 가독성이 증가된다. - 유지보수하기 쉬워진다. +) static 키워드를 삭제함으로써 인스턴스 별로 사용할 변수를 생성할 수 있어진다. --> 즉, static은 어떤 인스턴스던지 클래스에서 공동으로 사용하는 변수로 이해할 수 있다.
구독한 지는 좀 됐는데 처음으로 댓글을 써보네요...^^ HTML강의부터 쭉 들어오고 있습니다. 비전공자이고 개발에 관심이 있어서 혼자 책 사서 공부중인데 도움이 많이 됩니다. 감사드립니다. 클래스 : 변수 선언과 메소드 정의를 맴버로 가지는 명령어 묶음집 클래스 여러 묶음을 한 파일에 작성해도 되지만 다른 파일로 분리시킬 수 있음 클래스를 호출하여 사용할 때는 클래스명.변수명; 또는 클래스명.메소드명(); 또는 클래스명.메소드명(입력값); 등의 형태로 필요할 때 사용 클래스명.메소드명(입력값); 형태로 클래스를 호출할 때, 입력값을 변경해가며 클래스를 호출하는 경우 코드가 깨끗하지 못하기에 인스턴스 사용 인스턴스는 클래스를 임시(?)로 복제(여러 개 가능)하여 원하는 방식(원하는 입력값 설정)으로 호출하여 독립적으로 사용가능하며 아래와 같은 형태를 가짐 인스턴스 선언 방법 : 클래스명(인스턴스의 데이터 타입) 인스턴스명 = new(이건 자바 예약어) 클래스명(); 끝에 있는 클래스명은 호출하고자 하는 클래스의 이름 public, static 이 두 마리는... 아직은 막막하네요. public은 파일 또는 모든 자바파일 어디서나 호출할 수 있다는 것 같고....맞나요?.. static은 이 영상을 기반으로 짐작해보자면.. 인스턴스를 생성할 수 없는 클래스를 의미하는 것 같기도... 즉 고유한 클래스? 라는 뜻 같기도.. 다음 영상에서 답을 찾으러..휘리릭~
public static void main(String args) 처럼 안에서 함수를 호출할때는 인스턴스화 시켜서 메소드화 할수있습니다 반면 메인메소드안에 인스턴스화된것을 클래스를 하나만들고 메소드화 시킬때는 static 를 사용할수없습니다. 고유한클래스는 main메소드를 감싸고 있는 public class 단 하나입니다.
public은 접근제한자의 종류로써 어디서나 호출가능한 메서드라는 것을 명시합니다. static은 프로그램이 실행될 때 컴퓨터 메모리에 할당함으로써 언제든지 호출할 수 있도록하는 명령어입니다. 반대로 static으로 선언되지 않은 메서드는 인스턴스를 생성해서 임시로 메모리에 할당해서 사용할 수 있습니다. 부족한 설명이지만 도움되었기를 바라며, 혹시나 부족한 설명을 보태주시거나 잘못된 부분을 발견한 분께서는 댓글로 피드백 주시면 감사하겠습니다!
인스턴스와 클래스의 차이? 인스턴스는 클래스라는 설계도를 가지고 그와 똑같이 복제한 사본이다. 즉, 인스턴스와 클래스는 겉으로 보기에는 똑같지만, 인스턴스는 클래스를 복제한 것이므로 인스턴스는 클래스의 멤버를 임의로 추가, 변경할 수 없고 클래스의 멤버에 국한되어 사용할 수 밖에 없다. 인스턴스를 썼을 때 어떤 효용이 있는가? 인스턴스를 쓰면 하나의 클래스만 가지고도 여러 인스턴스를 생성하게 되어 반복되는 작업을 하나로 통일할 수 있는 효과를 준다.