일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- boxing
- 인텔리제이
- suvlet
- 제네릭
- 스프링
- Short
- 자동형변환
- 클래스
- https://start.spring.io
- 싱글톤
- Scanner
- 무한
- Jenkins
- start.spring.io
- maven
- 내장객체
- 메소드
- 콜렉션
- wrapper
- 제너릭
- dependency
- 빌드
- Java
- 언박싱
- bootstrap
- 싱글턴
- unboxing
- 루프
- 박싱
- 컬렉션
Archives
- Today
- Total
Developer Gonie
[2주차] 30. static 멤버함수 정의시 주의할 점* 본문
* 클래스 내에서 멤버함수를 정의할 때, 앞의 'static'은 필요에 따라 있어도 되고, 없어도 되는데,
'static'을 붙이면 static변수(=클래스변수)와 동일하게 객체를 생성하기 전부터 메모리에 올라가
바로 클래스명으로 함수를 호출하는게 가능하다.
반대로, 만약 함수 정의시 'static'을 붙이지 않았다면 객체를 생성 후 객체를 통해 함수를 호출해야한다.
* 위 원리로 컴파일될 때 객체를 만들지 않아도 main 함수가 호출될 수 있도록 static이 붙는 것임.
* mian 함수 같은 "static 메서드는 static 메서드만 (바로) 호출할 수 있다."
static이 아닌 메서드를 호출하고자 한다면 객체를 생성 후 호출해야 한다.
Q. 첫번째 문제, 아래에서 뭐가 문제인지 찾고 올바른 수정 방향을 제시하시오
import java.util.Scanner;
class Student{
int kor;
int eng;
int math;
int sum() {
return kor + eng + math;
}
static double avg() {
return (double)sum()/3; // 클래스 내의 함수를 이렇게 사용할 수도 있음.
}
}
실행결과
- 컴파일 오류
첫번째 문제에 대한 올바른 해답
문제해결 첫번째 방법
static 함수는 static 함수만 호출할 수 있어서, 위의 상태에서는 avg함수가 sum 함수를 사용할 수 없는 상태이다.
따라서, sum 멤버함수도 static 함수로 만들어줘야 함.
static int sum() {
return kor + eng + math;
}
'K-DigitalTraining 강의 > 1. Java' 카테고리의 다른 글
[2주차] 32. 멤버함수의 매개변수로 배열 넘기기 (0) | 2022.05.23 |
---|---|
[2주차] 31. static멤버변수(=클래스변수) 사용시 주의할 점* (0) | 2022.05.23 |
[2주차] 29. 클래스에서 멤버함수(메서드) 작성 및 호출 방법2 (0) | 2022.05.23 |
[2주차] 28. 클래스에서 멤버함수(메서드) 작성 및 호출 방법1 (0) | 2022.05.23 |
[2주차] 27. 클래스 관련 변수들(멤버변수=인스턴스변수, static변수=클래스변수)* (0) | 2022.05.20 |
Comments