2017-10-29 6 views
0

클래스 1에 두 개의 메서드가 있다고 가정 해보십시오. 클래스 1 생성자에 매개 변수를 전달하면 둘 다 메서드에 매개 변수를 전달할 수 있습니까? 아래의 예제 코드처럼 뭔가 :(Java) 생성자에서 클래스의 모든 메서드로 매개 변수 전달

class stuff{ 
    int c; 
    stuff(x){ 
     c = x; 
    } 

    public static int sum(int a, int b){ 
     stuff self = new stuff(); 
     return c*(a + b); 
    } 

public static int mult(int a, int b){ 
    return c*(a*b); 
} 
} 

class test{ 
    public static void main(String args[]){ 
    stuff foo = new stuff(5); 
    System.out.println(stuff.sum(1, 2)); 
    System.out.println(stuff.mult(1, 2)); 
    } 
} 

그래서 클래스 테스트에서 나는 방법에 대한 매개 변수를 통과하면서, 클래스 물건에서 두 방법 모두에 액세스하려면,하지만 난이 글로벌 수준의 매개 변수 (5 전달하려는 케이스). 어떻게해야합니까?

+0

당신은 이미 당신이 무엇을 설명 할. 너 해봤 어? 시도 할 때 문제는 무엇입니까? Java 클래스에 대한 자습서를 작성하는 것이 좋습니다. –

+0

그래서 변수 c에 대한 getter 메소드가 있다는 것을 의미합니까? –

답변

1

먼저 두 가지 중요한 일 :

  • 생성자

    가 인스턴스를 만들 수 있도록 설계되었습니다.
  • 클래스 이름은 대문자로 시작해야합니다.

당신이 쓰고있는 :

class Stuff{ 
    int c; 
    Stuff(x){ 
     c = x; 
    } 
    ... 
} 

이 다음은 c 필드 x을 할당합니다.
그러나 sum()mult()은 정적 방법입니다.
c 필드를 사용할 수 없습니다.
이러한 메서드를 인스턴스 메서드로 만들고 이러한 메서드에서는 c을 사용할 수 있습니다.

public static void main(String args[]){ 
    Stuff foo = new Stuff(5); 
    System.out.println(foo.sum(1, 2)); 
    System.out.println(foo.mult(1, 2)); 
} 

그리고 합계 또는 전달 된 매개 변수 값과 현재 값을 곱 이러한 인스턴스 메소드의 현재 인스턴스를 사용

public int sum(int a, int b){ 
    return c*(a + b); 
} 

public int mult(int a, int b){ 
    return c*(a*b); 
} 
1

메서드에서 '정적'키워드를 제거하고 sum 메서드에서 'stuff'의 새 인스턴스를 만들지 마십시오. 대신에 지금처럼 당신이하는 것처럼 test # main 메소드에서 물건의 인스턴스를 생성하면 원하는 것처럼 작동 할 것이다.