작성
·
88
0
안녕하세요 ! 인스턴스 변수 및 메소드 / 클래스 변수 및 메소드 내용 공부 중 이해가 쉽게 되지 않는 부분이 있어 질문드립니다 !
인스턴스 변수 : 객체마다 다르게 설정이 필요한 변수 (수업 내용 중 블랙박스 이름, 용량, 색상 등)
클래스 변수 : 선언하는 클래스 내 모든 객체가 동일하게 설정된 값 (수업 내용 중 블랙박스 자동 신고 기능)
인스턴스 메소드
객체마다 별도로 입력 받을 파라미터가 있고, 그에 따라 다른 결괏값 출력이 필요한 경우 사용 (수업 내용 중 블랙박스 내 영상 종류 별 저장된 수)
반환값의 자료형이 void 인 경우 출력값이 필요(System.out.println) / 반환값의 자료형이 void 가 아닐 경우 반환값이 필요(return)
반환값의자료형 메소드명(파라미터) {
출력값
}
클래스 메소드
별도로 입력 받을 파라미터가 필요 없고, 선언하는 클래스 내 객체 전체에 동일한 결괏값 출력이 필요한 경우 사용 (수업 내용 중 블랙박스 서비스 센터 연결)
클래스 변수 및 메소드는 객체 단위가 아닌 클래스 단위로 불러오는 것을 권장
static 반환값의자료형 메소드명() {
출력값
}
이렇게 이해했는데 .. 제가 이해한 내용이 맞는지, 잘못 이해한 부분이 있거나 추가적으로 알아야 할 부분이 있다면 피드백 부탁드립니다 !
그리고 추가적으로 궁금한 점이 있습니다.
수업 내용을 보면, 다른 클래스에서 변수 혹은 메소드를 가져 올 경우 public 이 없어도 가져올 수 있는 것으로 보입니다. private 설정만 하지 않는다면 굳이 public 이 없더라도 다른 클래스에서 가져오는 것이 상관 없는 것인지 궁금합니다 :)
답변 2
0
public, private 관련하여 질문 주신 부분은 클래스 단원의 '접근 제어자' 부분을 확인해주시면 좋겠습니다. public 과 private 의 차이가 무엇인지, protected 는 무엇인지, 어디까지 접근을 허용하는지 등에 대한 이해가 필요한 부분이며, 참고하실 수 있는 설명이 잘 되어 있는 링크로 답변을 드리도록 하겠습니다 😊
0
안녕하세요?
인스턴스 변수와 클래스 변수는 잘 이해하셨습니다.
인스턴스 메소드와 클래스 메소드의 차이는 조금 잘못 이해하신 부분이 있습니다.
둘의 가장 큰 차이는 바로 '객체'인데요.
인스턴스 메소드는 특정 객체에 속한 메소드로 객체가 생성되어야만 호출이 가능합니다. 이 메소드 내에서는 그 객체만이 가지는 값 (인스턴스 변수) 을 활용하여 어떤 작업이 진행될 수 있으므로 객체마다 동일한 인스턴스 변수를 출력하더라도 그 값은 모두 다를 수 있습니다. 메소드는 static 키워드 없이 정의합니다.
클래스 메소드는 클래스에 속한 메소드로 객체 생성 없이 호출합니다. 보통 클래스 이름을 통해 호출하며, 메소드 내에서는 클래스 변수만 사용할 수 있고, 객체가 없으므로 인스턴스 변수는 사용할 수 없습니다. 메소드는 static 키워드를 사용하여 정의합니다.
파라미터는 인스턴스 메소드나 클래스 메소드 모두 정의하기 나름이기 때문에 없을 수도 있고 여러 개가 있을 수도 있습니다. 클래스 메소드에 별도로 입력 받을 파라미터가 필요 없다는 문장은 틀렸습니다.
또한 인스턴스 메소드의 반환형을 void 로 정의한다고 해서 반드시 출력값이 필요한 것은 아닙니다. 보통 반환값이 있으면 그 값을 반환해주는 것으로 호출한 곳에서는 반환 결과를 확인할 수 있는데, 반환값이 없으면 따로 확인할 수 있는 부분이 없기 때문에 눈으로 확인을 시켜드리고자 출력문을 추가한 것입니다. 실무에서는 메소드 내에 출력문이 하나도 없는 경우가 매우 많습니다.
그러므로 수업에서 다루는 많은 출력문들은 수업의 이해도를 높이기 위한 용도, 또는 실무에서의 상황이라면 메소드가 잘 호출되는지, 값은 올바로 들어가있는지 등 로그를 남기기 위한 용도라고 이해해주시면 좋겠습니다 😊
감사합니다.
답변 너무 감사합니다 !!