A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王瀛 高级黑马   /  2013-5-26 11:25  /  2146 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王瀛 于 2013-5-26 12:06 编辑

刚学完抽象,综合前面学的知识,自己写了一个小程序。
  1. abstract class Shape{//定义图形类
  2.         double area;//定义面积变量
  3.         String name;//定义名称变量
  4.         abstract public void draw();//定义画图的抽象方法
  5.         public double area(){//定义获取面积的方法
  6.                 return area;
  7.         }
  8.         /*System.out.println("我的形状是"+name+"我的面积是"+area);*///-------HELP.1
  9.         /*System.out.println("123");*///-------HELP.20
  10. }

  11. class Triangle extends Shape{//定义Triangle类继承shape类
  12.         double d,h;//定义成员变量(底和高)
  13.         Triangle(String name,double d,double h){//定义变量为图形名称、底、高的Triangle的构造函数
  14.                 this.d = d;
  15.                 this.h = h;
  16.                 super.area = d*h/2;//三角形面积公式
  17.                 super.name = name;
  18.         }
  19.         public void draw(){//定义方法,展示图形名称及其面积
  20.                 System.out.println("形状是"+name+"******面积是"+area);
  21.         }        
  22. }

  23. class Rectangle extends Shape{//定义Rectangle类继承Shape类
  24.         double l,w;//定义成员变量(长和宽)
  25.         Rectangle(String name,double l,double w){//定义变量为图形名称、长、宽的Rectangle的构造函数
  26.                 this.l = l;
  27.                 this.w = w;
  28.                 super.area = l*w;//长方形面积公式
  29.                 super.name = name;
  30.         }
  31.         public void draw(){//定义方法,展示图形名称及其面积
  32.                 System.out.println("形状是"+name+"++++++面积是"+area);
  33.         }
  34. }

  35. class PrintShape{
  36.         public static void main(String[] args){
  37.                 Triangle t = new Triangle("三角形",20,10);//将Triangle类实例化
  38.                 Rectangle r = new Rectangle("长方形",8,9);//将Rectanglel类实例化
  39.                 t.draw(); //调用三角形的draw()方法
  40.                 r.draw();//调用长方形的draw()方法
  41.         }
  42. }
复制代码
如上所示,HELP.1和HELP.2已经被注释掉。
剩下的部分就是我开始写的程序,能够正常运行,运行结果如下:

后来我考虑在抽象类Shape中加入HELP.1中的内容:System.out.println("我的形状是"+name+"我的面积是"+area);
出现如下错误:

后来我又将HELP.1行的语句替换成HELP.2的语句:System.out.println("123");
还是出现错误,如下:


求帮忙分析一下,谢谢。


已经解决
语句要写在方法中,大意了。尴尬的错误。。。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

11 个回复

正序浏览
本帖最后由 江南雨 于 2013-5-26 12:14 编辑
  1. 改成这样就可以了!!
  2. package com.xiaoye.io;
  3. abstract class Shape{//定义图形类
  4.         double area;//定义面积变量
  5.         String name;//定义名称变量
  6.         abstract public void draw();//定义画图的抽象方法
  7.         public double area(){//定义获取面积的方法
  8.                 return area;
  9.         }
  10.         /*System.out.println("我的形状是"+name+"我的面积是"+area);*///-------HELP.1
  11.         /*System.out.println("123");*///-------HELP.20
  12. }

  13. class Triangle extends Shape{//定义Triangle类继承shape类
  14.         double d,h;//定义成员变量(底和高)
  15.         Triangle(String name,double d,double h){//定义变量为图形名称、底、高的Triangle的构造函数
  16.                 this.d = d;
  17.                 this.h = h;
  18.                 super.area = d*h/2;//三角形面积公式
  19.                 super.name = name;
  20.         }
  21.         public void draw(){//定义方法,展示图形名称及其面积
  22.                 System.out.println("形状是"+name+"******面积是"+area);
  23.         }        
  24. }

  25. class Rectangle extends Shape{//定义Rectangle类继承Shape类
  26.         double l,w;//定义成员变量(长和宽)
  27.         Rectangle(String name,double l,double w){//定义变量为图形名称、长、宽的Rectangle的构造函数
  28.                 this.l = l;
  29.                 this.w = w;
  30.                 super.area = l*w;//长方形面积公式
  31.                 super.name = name;
  32.         }
  33.         public void draw(){//定义方法,展示图形名称及其面积
  34.                 System.out.println("形状是"+name+"++++++面积是"+area);
  35.         }
  36. }

  37. public class PrintShape{
  38.         public static void main(String[] args){
  39.                 Triangle t = new Triangle("三角形",20,10);//将Triangle类实例化
  40.                 Rectangle r = new Rectangle("长方形",8,9);//将Rectanglel类实例化
  41.                 t.draw(); //调用三角形的draw()方法
  42.                 r.draw();//调用长方形的draw()方法
  43.         }
  44. }

复制代码
输出结果:
形状是三角形******面积是100.0
形状是长方形++++++面积是72.0

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
张旺达 发表于 2013-5-26 11:37
你那两个输出放在那里的目的是什么?

其实我本来想的是“图形都能够展示自己的属性,那么就用s.o.p展示出来好了”

然后就“理所应当”的写在了那里,结果就尴尬了。
现在已经弄明白了,感谢~
回复 使用道具 举报
First 发表于 2013-5-26 11:46
对了,我把主函数的类名改了,你编译时注意下

好的,谢谢问题已经解决{:3_51:}
回复 使用道具 举报
王瀛 高级黑马 2013-5-26 12:03:19
9#
张世威 发表于 2013-5-26 11:40
你把help.1和help.2这两个语句放错位置了,语言应该放在方法里面,而你放在了类成员的位置,编译器就报错了 ...

了解了,
我盯着这代码看了足足10分钟。。。。。尴尬死了。
回复 使用道具 举报
王瀛 高级黑马 2013-5-26 11:54:15
8#
First 发表于 2013-5-26 11:45
看我加*******************的

。。。。天哪,我把语句暴露在外面了,这错误好尴尬。。。

我再去试试,谢谢提醒!
回复 使用道具 举报
First 中级黑马 2013-5-26 11:46:22
7#
对了,我把主函数的类名改了,你编译时注意下
回复 使用道具 举报
  1. abstract class Shape{//定义图形类
  2.     double area;//定义面积变量
  3.     String name;//定义名称变量
  4.     abstract public void draw();//定义画图的抽象方法
  5.     public double area(){//定义获取面积的方法
  6.             return area;
  7.     }
  8.    
  9.     public void pri(){//***********************要封装 在 函数内
  10.     System.out.println("我的形状是"+name+"我的面积是"+area);//*///-------HELP.1
  11.     System.out.println("123");//*///-------HELP.20
  12.     }
  13. }

  14. class Triangle extends Shape{//定义Triangle类继承shape类
  15.     double d,h;//定义成员变量(底和高)
  16.     Triangle(String name,double d,double h){//定义变量为图形名称、底、高的Triangle的构造函数
  17.             this.d = d;
  18.             this.h = h;
  19.             super.area = d*h/2;//三角形面积公式
  20.             super.name = name;
  21.     }
  22.     public void draw(){//定义方法,展示图形名称及其面积
  23.             super.pri();//*************************加上
  24.             System.out.println("形状是"+name+"******面积是"+area);
  25.     }        
  26. }

  27. class Rectangle extends Shape{//定义Rectangle类继承Shape类
  28.     double l,w;//定义成员变量(长和宽)
  29.    
  30.     Rectangle(String name,double l,double w){//定义变量为图形名称、长、宽的Rectangle的构造函数
  31.             this.l = l;
  32.             this.w = w;
  33.             super.area = l*w;//长方形面积公式
  34.             super.name = name;
  35.     }
  36.    
  37.     public void draw(){//定义方法,展示图形名称及其面积
  38.             super.pri();//********************************加上
  39.             System.out.println("形状是"+name+"++++++面积是"+area);
  40.     }
  41. }

  42. class Demo{
  43.     public static void main(String[] args){
  44.             Triangle t = new Triangle("三角形",20,10);//将Triangle类实例化
  45.             Rectangle r = new Rectangle("长方形",8,9);//将Rectanglel类实例化
  46.             t.draw(); //调用三角形的draw()方法
  47.             r.draw();//调用长方形的draw()方法
  48.     }
  49. }
复制代码
看我加*******************的

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
你把help.1和help.2这两个语句放错位置了,语言应该放在方法里面,而你放在了类成员的位置,编译器就报错了。
回复 使用道具 举报
你那两个输出放在那里的目的是什么?
回复 使用道具 举报
张世威 发表于 2013-5-26 11:31
三国杀的头像,,给你顶一个。

其实我也注意到你了{:3_57:}
回复 使用道具 举报
三国杀的头像,,给你顶一个。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马