黑马程序员技术交流社区
标题:
代码问题
[打印本页]
作者:
黑马张伟
时间:
2012-1-3 08:15
标题:
代码问题
本帖最后由 黑马张伟 于 2012-1-3 08:15 编辑
编写一个完整的Java 程序。包含接口ShapeArea,类Circle、Rectangle、Test,具体要求如下:
⑴接口ShapeArea:
①接口方法
double getArea():求一个形状的面积
double getPerimeter ():求一个形状的周长
⑵类Rectangle:
实现ShapeArea接口,并有以下属性和方法:
①属性
width: double型,表示长方形的宽度
height:double型,表示长方形的长度
②方法
Rectangle(double w, double h):构造函数
toString():输出矩形的描述信息,如“width=1.0,height=2.0,perimeter=6.0,area=2.0”
⑶Test类作为主类要完成测试功能
① 生成Rectangle对象
② 调用对象的toString方法,输出对象的描述信息
下面是我写的答案
interface ShapeArea //接口
{
double getArea();
double getPerimeter();
}
class Rectangle implements ShapeArea //类
{
double width,height;
Rectangle(double w,double h)
{ width=w;
height=h;
}
double getArea()
{ double area;
area=width*height;
return area;
}
double getPerimeter()
{ double perimeter;
perimeter=2*width*height;
return perimeter;
}
void toString()
{ System.out.println("width="+width+","+"height="+height+","+"/n"
+"perimeter="+getPerimeter()+","+"area="+getArea());
}
}
class Test
{
public static void main(String args[])
{
Rectangle test=new Rectangle(4,6);
test.toString();
}
}
错误提示
F:\>javac Test.java
Test.java:19: Rectangle 中的 getPerimeter() 无法实现 ShapeArea 中的 getPerimeter
();正在尝试指定更低的访问权限;为 public
double getPerimeter()
^
Test.java:14: Rectangle 中的 getArea() 无法实现 ShapeArea 中的 getArea();正在尝
试指定更低的访问权限;为 public
double getArea()
^
Test.java:24: Rectangle 中的 toString() 无法覆盖 java.lang.Object 中的 toString(
);正在尝试指定更低的访问权限;为 public
void toString()
作者:
李盈科
时间:
2012-1-3 09:09
本帖最后由 李盈科 于 2012-1-3 09:11 编辑
你出的问题:1.子类要覆盖了父类中定义的方法,那么不能降低其可见性。在接口中的抽象方法只能是public的,默认也是public权限。ss2重写toString 写错了 代码如下
interface ShapeArea // 接口
{
public double getArea();
double getPerimeter();
}
class Rectangle implements ShapeArea // 类
{
double width, height;
Rectangle(double w, double h)
{
width = w;
height = h;
}
public double getArea()
{
double area;
area = width * height;
return area;
}
public double getPerimeter()
{
double perimeter;
perimeter = 2 * width * height;
return perimeter;
}
@Override
public String toString()
{
// TODO Auto-generated method stub
return "width=" + width + "," + "height=" + height + ","
+ "/n" + "perimeter=" + getPerimeter() + "," + "area="
+ getArea();
}
}
复制代码
作者:
刘小峰
时间:
2012-1-3 09:11
你的小毛病太多,我就不细说了;下面是我的代码,你拿回去运行一下试试,希望对你有所帮助
/*
* ShapeArea接口
*
*/
public interface ShapeArea {
public double getArea();
public double getPerimeter();
}
/*
* Rectangle类
*
*/
public class Rectangle implements ShapeArea {
private double width;
private double height;
public Rectangle( double height, double width) {
this.height=height;
this.width=width;
}
@Override
public double getArea() {
return width*height;
}
@Override
public double getPerimeter() {
return 2*(width+height);
}
public String toString(){
return "width:"+width+"\t"+"heigh:t"+height+"\n"+"Area:"+getArea()+"\t"+"Perimeter:"+getPerimeter();
}
}
/*
* Test测试类
*/
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入长:");
double height = input.nextDouble();
System.out.print("请输入宽:");
double width = input.nextDouble();
Rectangle re = new Rectangle(width, height);
System.out.println(re.toString());
}
}
作者:
刘基军
时间:
2012-1-3 10:20
注意:接口中的成员变量和方法的访问权限默认是public的,
所以实现接口,重写的方法必须使用public修饰。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2