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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚伟涛 中级黑马   /  2012-4-14 21:36  /  1310 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public interface Printx {
  2.    public void printMyWay();
  3. }
  4. public class Squre implements Printx{
  5.     double height,wide;
  6.     double area,length;
  7.     Squre(double height,double wide){
  8.         this.height=height;
  9.         this.wide=wide;
  10.     }
  11.     Squre(double height){
  12.         this.height=height;
  13.     }
  14.     public void printMyWay(){
  15.         area=height*wide;
  16.         length=2*(height+wide);   
  17.     };   
  18. }
  19. public class Squreson extends Squre {
  20.     double diagonal;
  21.     Squreson(double height){
  22.         this.height=height;
  23.     }
  24.     public void printMyWay(){
  25.         area=height*height;
  26.         length=4*height;
  27.         diagonal=sqrt(2*height*height);
  28.     }   
  29.     }
  30. }
  31. public class Print {
  32.     public static void main(String[] args) {
  33.         Squre squre;
  34.         Squreson squreson;
  35.         squre=new Squre(4,5);
  36.         squre.printMyWay();
  37.         squreson=new Squreson(4);
  38.         squreson.printMyWay();
  39.     }
  40. }

复制代码
上面的编译出现了3个错误:
符号: 构造函数 Squreson(int)
位置: 类 接口.Squreson
        squreson=new Squreson(4);
符号: 构造函数 Squre()
位置: 类 接口.Squre
public class Squreson extends Squre {
符号: 方法 sqrt(double)
位置: 类 接口.Squreson
        diagonal=sqrt(2*height*height);
请问是什么问题呢?

8 个回复

倒序浏览
本帖最后由 王永旺 于 2012-4-14 21:56 编辑

类名 只有一个类可以加public啊,这么多public不行的。
另外 方法sqrt()你似乎没定义过吧。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
1.一个.java文件里最多只能有一个类是public的;
2.Squreson(double height){
        //这边默认是会调用父类的无参构造函数: super() ,而你的Squre类并没有无参构造函数
        this.height=height;
    }
先修改

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1 哥们还在啊,打算几期的黑马?.

查看全部评分

回复 使用道具 举报
04.public class Squre implements Printx{

05.    double height,wide;

06.    double area,length;

07.    Squre(double height,double wide){

08.        this.height=height;

09.        this.wide=wide;

10.    }

11.    Squre(double height){

12.        this.height=height;

13.    }

14.    public void printMyWay(){

15.        area=height*wide;

16.        length=2*(height+wide);   

17.    };   

怎么又两个构造函数,你让主程序运行哪个?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
21,22行  改成这吧  Squreson(double height){super(height);}
27行的方法在哪啊 兄弟 没有定义啊

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
一:一个java文件只有一个public的类,不过我猜测你是把所有代码复制到一起,每个public应该是单独的java文件。
二:21,22行
请修改为
        Squreson(double height) {
                super(height);
        }
三:sqrt()方法没有定义,猜测你应该是调用Math类的Math.sqrt()这个方法,请修正。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
1.如果这些文件都是放在一起的话,那么只能有一个public,interface也不能是public的。class也只能主类是public的。
此外,sqrt()方法前面需要加上Math.sqrt()。
2.30行的}去掉。
3.在04.public class Squre implements Printx{代码里面加上Squre() {}就行。
4.  在14,24的public void printMyWay()方法的最后面加上System.out.println("area :"+area+"------"+"length: "+length);输出结果。
现在应该就可以了。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
啷个里个郞 发表于 2012-4-14 22:15
04.public class Squre implements Printx{

05.    double height,wide;

调用哪个运行哪个呗?谁说必须只能一个构造函数啊?构造函数也是可以重载的。
回复 使用道具 举报
一个.java文件里最多只能有一个类是public的这个必须注意啊 。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马