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
반응형
'study > Programming' 카테고리의 다른 글
[Java] HashMap (2) | 2020.06.15 |
---|---|
[Java] 제네릭 메소드로 변경하기 (0) | 2020.06.11 |
[Java] 예외처리문(try~catch), 곱한 값이 음수일 경우 (0) | 2020.05.27 |