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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 七年锦·旅行 中级黑马   /  2014-5-12 13:39  /  2434 人查看  /  20 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

小白提问:为什么以下运行会出现"缺少方法主体,或声明抽象"的错误,请各位大侠帮忙分析

class  Person
{
    int age;
    void speak();
    {
        System.out.println("age="+age);
    }
}

class PersonDemo2
{
    public static void main(String[] args)
    {
        Person p = new Person();
         
         p.age = 20;
         p.speak();
    }
}



封装(private).PNG (87.59 KB, 下载次数: 70)

代码

代码

20 个回复

倒序浏览
void speak();多了一;号
回复 使用道具 举报
void speak( )后边加了分号,所以提示你是不是想声明抽象,后边再跟{ },{ }就是构造代码块了。
回复 使用道具 举报
class  Person
{
    int age;
    void speak();//多一个;号,如果加上;说明此方法是一个声明,就不需要下面{}里面的东西,要使用他需要再次定义内容,或者用覆盖。
    {
        System.out.println("age="+age);
    }
}

class PersonDemo2
{
    public static void main(String[] args)
    {
        Person p = new Person();
         
         p.age = 20;
         p.speak();
    }
}

回复 使用道具 举报
void speak()后面多了一个“;”导致程序编译出错了...
回复 使用道具 举报
void speak();多了一个“;” 避免这种错误最好的办法就是养成编写代码的良好习惯。每次写完方法名和“()”后紧接着就写代码块标示符“{}”,当然 如果你是想写抽象方法就不用了,直接写“;”就行了
回复 使用道具 举报
class  Person
{
    int age;
    void speak()//把这里的分号去掉就可以了
    {
        System.out.println("age="+age);
    }
}

class PersonDemo2
{
    public static void main(String[] args)
    {
        Person p = new Person();
         
         p.age = 20;
         p.speak();
    }
}
回复 使用道具 举报
帅哥哥 来自手机 高级黑马 2014-5-12 20:22:25
8#
初级错误啊,哈,刚开始的时候遇到过~
回复 使用道具 举报
alxl 初级黑马 2014-5-12 20:30:27
9#
提示第四行有问题。既:void speak(); 是一个方法,方法后面没有分号。 方法后跟的是{}
回复 使用道具 举报
黄晓鑫 发表于 2014-5-12 14:31
void speak();多了一;号

哦,这样啊,知道了,谢谢解答
回复 使用道具 举报
要你快乐 发表于 2014-5-12 15:21
void speak( )后边加了分号,所以提示你是不是想声明抽象,后边再跟{ },{ }就是构造代码块了。 ...

哦,这样啊,知道了,谢谢解答!
回复 使用道具 举报
这里speak()方法后面多了个;号           
回复 使用道具 举报
houyudong 发表于 2014-5-12 16:35
class  Person
{
    int age;

哦,这样啊,知道了,谢谢解答!
回复 使用道具 举报
彭旭文 发表于 2014-5-12 17:33
void speak()后面多了一个“;”导致程序编译出错了...

哦,这样啊,知道了,谢谢解答!
回复 使用道具 举报
class  Person
{
     int age;
     void speak();
     {
         System.out.println("age="+age);
     }
}
void speak();后面多了一个;号!
回复 使用道具 举报
解决问题的思路,已经注释到你代码出错的地方了,请看代码,希望能对你有帮助。


class  Person
{
    int age;
//这里是语法错误,你定义了一个没有方法体的函数,所以提示“缺少方法主体,或声明抽象”
//因为这中定义方式只有接口和抽象累中才可以。所以要不去掉“{}”这个,把方法speak()修改为
//抽象方法,这时候Person类也就必须为抽象类。第二种,就是去掉“;”号,这样就没有问题了。
    void speak();
    {
        System.out.println("age="+age);
    }
}

class PersonDemo2
{
    public static void main(String[] args)
    {
        Person p = new Person();
         
         p.age = 20;
         p.speak();
    }
}
回复 使用道具 举报
多了一个分号,在第四行
回复 使用道具 举报
路过~~~~~
回复 使用道具 举报
jsjchenlong 发表于 2014-5-13 07:48
解决问题的思路,已经注释到你代码出错的地方了,请看代码,希望能对你有帮助。

谢谢解答
回复 使用道具 举报

客气了。。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马