class Calculator{
int left, right;
public void Input(int left,int right)
{
this.left = left;
this.right = right;
}
public void Plus(){
System.out.println(this.left + this.right);
}
public void Averange() {
System.out.println((this.left + this.right)/2);
}
}
public class Test_191007 {
public static void main(String[] args) {
Calculator Math = new Calculator();
Math.left = 2;
Math.right = 3;
Math.Plus();
Math.Input(5, 10);
Math.Plus();
Math.Averange();
Calculator Math2 = new Calculator();
Math2.Input(3, 3);
Math2.Plus();
Math2.Averange();
Math.Plus();
Math.Averange();
}
}
Class Calculator{}
Calculator 라는 설계도(클래스) 선언.
이 설계도를 갖고 new + 설계도 명으로 인스턴스를 생성하여 사용할 수 있다.
객체 : 변수 + 메소드의 집합.
this.left,this.right
Class Calculator 객체 안의 left,right 값을 의미.
public void Input(int left, int right) 안의 left ,right 값은 다른 객체에서 넘어온 값을 뜻한다.
Calculator Math = new Calculator();
- new Calculator();는 새로운 인스턴스를 새로 생성한다는 말이다.
그 후 Math 라는 변수에 대입한다는 뜻인데, Calculator 라는 정보를 입력 받기 위하여 Type에 클래스 명(Calculator)을 넣어준다.
위쪽은 메소드 선언시 public class이고 아래쪽은 public static void 인데 왜?
static 으로 붙으면 공통사용 가능이 되고 c1의 left,right c2의 left,right가 따로 나눠지지 않고 같아지는 것 같다.
만약 처음에 static int left,right 에 100,200을 사용하면 모든 c1,c2,c3의 left ,right는 100,200을 사용해야 되고 중간에 값을 50,100으로 변경하면 모두 다 변경된 값으로 저장된다.
1.클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다.
- 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적기 때문에 서로 다른 값을 유지한다. 경우에 따라서는 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우 static을 붙인다.
2. static이 붙은 멤버변수는 인스턴스를 생성하지 않아도 사용할 수 있다.
- static이 붙은 멤버변수(클래스변수)는 클래스가 메모리에 올라갈때 이미 자동적으로 생성되기 때문이다.
3. static이 붙은 메서드(함수)에서는 인스턴스 변수를 사용할 수 없다.
- static이 메서드는 인스턴스 생성 없이 호출가능한 반면, 인스턴스 변수는 인스턴스를 생성해야만 존재하기 때문에... static이 붙은 메서드(클래스메서드)를 호출할 때 인스턴스가 생성되어있을수도 그렇지 않을 수도 있어서 static이 붙은 메서드에서 인스턴스변수의 사용을 허용하지 않는다. (반대로, 인스턴스변수나 인스턴스메서드에서는 static이 붙은 멤버들을 사용하는 것이 언제나 가능하다. 인스턴스변수가 존재한다는 것은 static이 붙은 변수가 이미 메모리에 존재한다는 것을 의미하기 때문이다.)
4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.
- 메서드의 작업내용중에서 인스턴스 변수를 필요로 한다면, static을 붙일 수 없다. 반대로 인스턴스변수를 필요로 하지 않는다면, 가능하면 static을 붙이는 것이 좋다. 메서드 호출시간이 짧아지기 때문에 효율이 높아진다. (static을 안붙인 메서드는 실행시 호출되어야할 메서드를 찾는 과정이 추가적으로 필요하기 때문에 시간이 더 걸린다.)
5. 클래스 설계시 static의 사용지침
- 먼저 클래스의 멤버변수중 모든 인스턴스에 공통된 값을 유지해야하는 것이 있는지
살펴보고 있으면, static을 붙여준다.
- 작성한 메서드 중에서 인스턴스 변수를 사용하지 않는 메서드에 대해서 static을
붙일 것을 고려한다.
출처: https://vaert.tistory.com/101 [Vaert Street]
'전공 > 자바' 카테고리의 다른 글
[자바] 자바로 Stack 구현해보기. (0) | 2019.11.28 |
---|---|
[자바] Main문의 String[] args 출력해보기 (0) | 2019.11.28 |
[자바] StringTokenizer 클래스 사용법 (0) | 2019.11.28 |
[퍼옴]자바 타이머 사용 방법 (0) | 2019.11.21 |