※복습
클래스 변수와 클래스 메소드
- 멤버변수와 멤버메소드를 선언할 때 static을 붙이면 클래스 멤버로 선언된다.
- 일반적으로 멤버라 하면 인스턴스 멤버를 의미하는 경우가 많습니다.
클래스멤버와 인스턴스멤버를 합하여 멤버라 지칭합니다.
- 클래스멤버는 인스턴스와 관계없이 동작됩니다.
- 클래스멤버는 모든 인스턴스에서 공유할 수 있습니다.
- 단, 클래스멤버에서는 인스턴스 멤버에 접근 할 수 없습니다.
.
.
예제1
class NumberPrinter
{
public static void showInt(int n){ System.out.println(n); }
public static void showDouble(double n){ System.out.println(n); }
}
class ClassMethod
{
public static void main(String[] args)
{
NumberPrinter.showInt(20);
NumberPrinter np = new NumberPrinter();
np.showDouble(3.14);
}
}
.
이런 식으로 static을 붙이게 되면 따로 생성자 없이 사용이 가능합니다.
.
.
예제2
class SimpleMath
{
public static final double PI = 3.1415;
public double add(double n1, double n2){ return n1 + n2; }
public double min(double n1, double n2){ return n1 - n2; }
public double mul(double n1, double n2){ return n1 * n2; }
}
class AreaMath
{
public double calCircleArea(double rad){
SimpleMath sm = new SimpleMath();
double result = sm.mul(rad, rad);
result = sm.mul(result, SimpleMath.PI);
return result;
}
public double calRectangleArea(double width, double height){
SimpleMath sm = new SimpleMath();
return sm.mul(width, height);
}
}
class PerimeterMath
{
public double calCirclePeri(double rad){
SimpleMath sm = new SimpleMath();
double result = sm.mul(rad, 2);
result = sm.mul(result, SimpleMath.PI);
return result;
}
public double calRectanglePeri(double width, double height){
SimpleMath sm = new SimpleMath();
return sm.add(sm.mul(width, 2), sm.mul(height, 2));
}
}
class ClassMeathod2
{
public static void main(String[] args)
{
AreaMath am = new AreaMath();
PerimeterMath pm = new PerimeterMath();
System.out.println("원의 넓이 : " + am.calCircleArea(2.4));
System.out.println("사각형의 넓이 : " + am.calRectangleArea(5.5, 4.5));
System.out.println("원의 둘레 : " + pm.calCirclePeri(5.4));
System.out.println("사각형의 둘레 : " + pm.calRectanglePeri(5.0, 3.5));
}
}
.
.
클래스와 변수와 클래스 메소드를 이용하여 원과 사각형의 넓이, 둘레를 구하는 프로그램을 만들었습니다.
여기서 static을 붙일 수 있는 메소드는???
.
.
정답은 모든 메소드에 가능했습니다. 작성한 메소드들이 인스턴스랑 상관이 없기 때문입니다.
class SimpleMath
{
public static final double PI = 3.1415;
public static double add(double n1, double n2){ return n1 + n2; }
public static double min(double n1, double n2){ return n1 - n2; }
public static double mul(double n1, double n2){ return n1 * n2; }
}
class AreaMath
{
public static double calCircleArea(double rad){
//SimpleMath sm = new SimpleMath();
double result = SimpleMath.mul(rad, rad);
result = SimpleMath.mul(result, SimpleMath.PI);
return result;
}
public static double calRectangleArea(double width, double height){
//SimpleMath sm = new SimpleMath();
return SimpleMath.mul(width, height);
}
}
class PerimeterMath
{
public static double calCirclePeri(double rad){
//SimpleMath sm = new SimpleMath();
double result = SimpleMath.mul(rad, 2);
result = SimpleMath.mul(result, SimpleMath.PI);
return result;
}
public static double calRectanglePeri(double width, double height){
//SimpleMath sm = new SimpleMath();
return SimpleMath.add(SimpleMath.mul(width, 2), SimpleMath.mul(height, 2));
}
}
class ClassMeathod2Ex
{
public static void main(String[] args)
{
//AreaMath am = new AreaMath();
//PerimeterMath pm = new PerimeterMath();
System.out.println("원의 넓이 : " + AreaMath.calCircleArea(2.4));
System.out.println("사각형의 넓이 : " + AreaMath.calRectangleArea(5.5, 4.5));
System.out.println("원의 둘레 : " + PerimeterMath.calCirclePeri(5.4));
System.out.println("사각형의 둘레 : " + PerimeterMath.calRectanglePeri(5.0, 3.5));
}
}
728x90
반응형
'Java > 본격 Java 클래스' 카테고리의 다른 글
[Java] Nested 클래스 활용 (0) | 2020.07.15 |
---|---|
[Java] Nested 클래스 (0) | 2020.07.14 |
[Java] 클래스 변수 (0) | 2020.06.25 |
[Java] 정보 은닉(private) (0) | 2020.06.25 |
[Java] 실습 - 삼각형 넓이 구하기 (0) | 2020.06.25 |