YS's develop story
JAVA error) The method must override or implement a supertype method 본문
안녕하세요 오늘은 java문제를 풀다가 한 실수를 정리하려고 합니다 ~

바로 코드를 확인해 볼까요?
package javapractice;
public class JavaPractice {
	public static void main(String[] args) {
		
		Shape[] arr= {
				new Circle("Circle",5),
				new Rectangle("Rectangle",3,4),
				new Triangle("Triangle",5,5)	
		};
		
		double sum=0;
		for(Shape a: arr) {
			System.out.println(a.getName()+"면적 : "+a.getArea());
			sum+=a.getArea();
		}
		System.out.println("면적의 합 : "+ sum);
	}
}
class Shape{
	protected String name;
	
	Shape(String name){
		this.name=name;
	}
	
	String getName() {
		return name;
	}
}
class Circle extends Shape{
	private double radius;
	private final double PI=3.141592;
	Circle(String name,double radius){
		super(name);
		this.radius=radius;
	}
	@Override
	double getArea() {
		return radius*radius*PI;
	}
}
class Rectangle extends Shape{
	private double length;
	private double height;
	
	Rectangle(String name,double length,double height){
		super(name);
		this.length=length;
		this.height=height;	
	}
	@Override
	double getArea() {
		return length*height;
	}
}
class Triangle extends Shape{
	private double length;
	private double height;
	
	Triangle (String name,double length,double height){
		super(name);
		this.length=length;
		this.height=height;	
	}
	@Override
	double getArea() {
		return length*height*0.5;
	}
}이 코드는 아래의 사진과 같이 에러가 발생합니다.

에러의 원인은 상위 클래스인 Shape에 오버라이딩 하는 메소드 getArea의 선언 및 정의가 없기 때문입니다.
Shape의 메소드 getArea를 사용하지 않더라도
하위클래스가 상속을 하여 사용하게 되면 상위 클래스에 무조건 선언이 있어야 합니다.
Shape 클래스에 getArea메소드를 다음과 같이 추가 해 줍시다.
이 때, 오버라이딩 되어야 하기 때문에 다른 클래스에 있는 getArea메소드와 반환형, 매개변수가 같아야 합니다.
어차피 Shape의 getArea메소드는 사용하지 않으니 return 0으로 해주었습니다.
class Shape{
	protected String name;
	
	Shape(String name){
		this.name=name;
	}
	
	double getArea() {
		return 0;
	}
	
	String getName() {
		return name;
	}
}
이처럼 코드를 수정하게 되면 아래와 같이문제없이 코드가 작동 됩니다.

'Java' 카테고리의 다른 글
| 자주 사용하는 정규 표현식(Regex) 정리 (0) | 2023.08.01 | 
|---|---|
| JSP, Tomcat활용하여 MySQL 데이터 가져오기 (0) | 2022.11.09 | 
| Java ) java 상속관련 .. (0) | 2020.10.16 | 
| JAVA error) Implicit super constructor is undefined, Constructor call must be the first statement in a constructor. (0) | 2020.10.14 | 
| JAVA ) java 2차원 배열 관련.. , 열혈 java 프로그래밍 309쪽 문제 2번 (0) | 2020.10.10 | 
			  Comments
			
		
	
               
           
					
					
					
					
					
					
				 
								 
								 
								