본문 바로가기

study/Programming

[JAVA] 추상 메소드, 인터페이스

728x90

*기존 추상메소드 코드를 인터페이스 사용하여 구현하기

 

조건)

shape 추상 클래스를 인터페이스로 변경

shape 인터페이스의 구현 클래스로 circle 클래스를 변경

인터페이스로 구현 객체를 사용하여 결과 출력

 

<기존 코드>

package sec01;

abstact class Shape{
	double PI= 3.14;
    
    abstract void draw();
    public double findArea(){
    	return 0.0;
    }
}
package sec01;

class Circle extends Shape{
	int radius;
    
    public Circle(int radius){
    	this.radius= radius;
    }
    public void draw(){
    	System.out.println("원을 그리다");
    }
    public double findArea(){
    	return PI* radius* radius;
    }
}
package sec01;

public class AbstractClassDemo{
	public static void main(String[] args){
    	Circle c= new Circle(3);
        c.draw();
        System.out.prinf("원의 넓이는 %.1f\n", c.findArea());
    }
}

<수정한 코드>

package chap08;

public interface Shape { //인터페이스 선언
	double PI= 3.14; //상수필드는 대문자로

	abstract void draw();//추상메소드
	public double findArea(int i);//추상메소드

}

findArea() : 이 안에 int i 가 들어간건 이후에 오류가 떠서 넣어주었다. 

package chap08;

public class Circle implements Shape {// 구현클래스
	private int radius;
	public Circle(int radius) {
		this.radius= radius;
	}
	
	public void draw() {
		System.out.println("원을 그리다.");
	}
	public double findArea(int i) {
		return PI*radius*radius;
	}
}
package chap08;

public class AbstractClassDemo {

	public static void main(String[] args) {
		Shape s = new Circle(3); //인터페이스 변수 선언하고 구현 객체 대입
		s.draw();
		System.out.printf("원의 넓이는 %.1f\n", s.findArea(3));
	}

}

s.findArea(3)으로 바로 출력하려다보니 메소드에 변수가 포함이 안되어있어 오류가 났고, 앞의 클래스들에도 추가해주었다..

 

+)쉬운 문제였는데 Shape s= new Circle(3)에서 3을 넣으려다보니 갑자기 혼동되어서 조금 고생했다..

728x90
반응형