请问这段java代码怎么修改?新手小白在线求救

package work;

//定义一个Shape接口,接口中含有一个抽象方法,此抽象方法接收一个double类型的参数
interface Shape
{
    double area(double x);
}

//定义一个Square类,实现Shape接口
class Square implements Shape
{
    double area(double x)
    {
        double a=x*x;
        return a;
        System.out.println("正方形的面积为    "+a);
    }
}

//定义一个Circle类,实现Shape接口
class Circle implements Shape
{
    double area(double x)
    {
        double a=3.14*x*x;
        return a;
        System.out.println("圆的面积为   "+a);
    }
}

public class Test02 {

    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        Square square=new Square();
        square.area(2.00);
        Circle circle=new Circle();
        circle.area(3.00);

    }

}

运行报错提示:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Cannot reduce the visibility of the inherited method from Shape

    at work.Square.area(Test02.java:12)
    at work.Test02.main(Test02.java:37)
 

每个方法会在 return 执行后结束,你把打印语句写在在了 return 后面,所以编译器认为 return 后面的语句都是无效的

package work;

//定义一个Shape接口,接口中含有一个抽象方法,此抽象方法接收一个double类型的参数
interface Shape {
	double area(double x);
}

//定义一个Square类,实现Shape接口
class Square implements Shape {
	public double area(double x) {
		double a = x * x;
		System.out.println("正方形的面积为    " + a);
		return a;
	}
}

//定义一个Circle类,实现Shape接口
class Circle implements Shape {
	public double area(double x) {
		double a = 3.14 * x * x;
		System.out.println("圆的面积为   " + a);
		return a;
	}
}

public class Test02 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Square square = new Square();
		square.area(2.00);
		Circle circle = new Circle();
		circle.area(3.00);
	}
}

正方形的面积为    4.0
圆的面积为   28.259999999999998
 

// return 代表的是一个方法执行的结束,如果有返回参数的话,它还能返回参数。
// 我给你举个例子
// 1. 如果是没有返回值的方法的话,是不需要 return 的
public void test() {

	System.out.println("fdsf");
}

// 2. 如果没有返回值,也是可以使用 return 的

public void test(int a) {

	System.out.println("1");
	if (a == 1) {
		// 注意,这里 return 后面没有参数,直接以引号结束的
		// 如果执行了 return,后面的代码就不会执行了
		// 这种写法在编程中称为自卫式写法
		return;
	}
	System.out.println("2");
	System.out.println("3");

}

// 这种写法也是可以的,如果 if 中的代码过长或者还有嵌套的话,看上去就不好了
public void test(int a) {
	
	System.out.println("1");
	if (a != 1 ) {
		System.out.println("2");
		System.out.println("3");
	}
}

// 3. 如果是有返回值,则必须有 return ,并且 return 后面要带上对应类型的参数
public int test() {

	System.out.println("fdsf");
	return 1;
}

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632