자바 질문 드립니다 (__)
제나
// 추상클래스, 상속, 다형성을 이용해서 삼각형, 사각형, 원 에 대한 넓이를 구하는 시스템을 구현하시오.
/*
shape, tir, rect, cir class 는 수정불가능.
각각 triangle, rectangle, circle class를 작성, 수정하여 사용.
*/
// 삼각형 넓이 = 가로 * 세로 / 2
// 사각형 넓이 = 가로 * 세로
// 원 넓이 = 반지름 * 반지름 * PI
/*
각 삼각형, 사각형, 원의 가로, 세로, 반지름 등은 scanner 클래스를 이용하여 콘솔창으로
부터 입력을 받아 사용.
*/
import java.util.Scanner;
//shape class 수정불가
class shape{
public double area;
public double getArea(){
return area;
}
}
//tri, rect, cir class 수정불가
abstract class tri extends shape{
abstract public void set_area_triangle(double width, double height);
}
abstract class rect extends shape{
abstract public void set_area_rectangle(double width, double height);
}
abstract class cir extends shape{
final static double PI = 3.14;
abstract public void set_area_circle(double radius);
}
class triangle extends tri{
public void set_area_triangle(double width, double height)
{
this.width = width;
this.height = height;
}
public double getArea()
{
return (width*height)/2;
}
}
class rectangle extends rect{
public void set_area_rectangle(double width, double height)
{
this.width = width;
this.height = height;
}
public double getArea()
{
return width*height;
}
}
class circle extends cir{
public void set_area_rectangle(double radious)
{
this.radius = radius;
}
public double getArea()
{
return radius*radius*PI;
}
}
public class EX01
{
public static void main(String[] args)
{
//자바의 다형성을 사용하여 area값을 출력
shape[] shapes = new shape[3];
//shapes[0].getArea(); 를 사용하여 결과를 출력
}
}
class triangle extends tri{ }
이부분을 수정해야되는데, 제가 한 방식은 잘못된 방식인가요?? tri 클래스에서 shape 클래스를 상속받고, triangle 클래스에서
tri 클래스를 상속받으닌깐,,,shape 과 triangle 클래스의 내용(?)을 상속받았으니, 제가 한것처럼 사용하면 안되는건가요,,ㅠㅠ;
오버라이딩을 이용해서 할려고 하는데,, 잘못된 개념을 가지고 있는건지 안되네요,,ㅠ_ㅠ; 답변 부탁드리겠습니다, ! (__)
-
유희
별 문제될 건 없어 보이는데 뭐가 문젠가요...?
그리고 어차피 동일한 클래스 같은데 굳이 tri, rect, cir 같은 abstract 클래스가 필요있나요? 그냥 그 하위 클래스에서 바로 shape를 상속받아 처리하면 되지 않나요?