黑马程序员技术交流社区

标题: 小白提问(一)??? [打印本页]

作者: 七年锦·旅行    时间: 2014-5-12 13:39
标题: 小白提问(一)???
小白提问:为什么以下运行会出现"缺少方法主体,或声明抽象"的错误,请各位大侠帮忙分析

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, 下载次数: 67)

代码

代码

作者: 黄晓鑫    时间: 2014-5-12 14:31
void speak();多了一;号
作者: 要你快乐    时间: 2014-5-12 15:21
void speak( )后边加了分号,所以提示你是不是想声明抽象,后边再跟{ },{ }就是构造代码块了。
作者: houyudong    时间: 2014-5-12 16:35
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 17:33
void speak()后面多了一个“;”导致程序编译出错了...
作者: 温水煮青蛙    时间: 2014-5-12 17:42
void speak();多了一个“;” 避免这种错误最好的办法就是养成编写代码的良好习惯。每次写完方法名和“()”后紧接着就写代码块标示符“{}”,当然 如果你是想写抽象方法就不用了,直接写“;”就行了
作者: 提菩--空    时间: 2014-5-12 17:54
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
初级错误啊,哈,刚开始的时候遇到过~
作者: alxl    时间: 2014-5-12 20:30
提示第四行有问题。既:void speak(); 是一个方法,方法后面没有分号。 方法后跟的是{}
作者: 七年锦·旅行    时间: 2014-5-12 21:23
黄晓鑫 发表于 2014-5-12 14:31
void speak();多了一;号

哦,这样啊,知道了,谢谢解答
作者: 七年锦·旅行    时间: 2014-5-12 21:24
要你快乐 发表于 2014-5-12 15:21
void speak( )后边加了分号,所以提示你是不是想声明抽象,后边再跟{ },{ }就是构造代码块了。 ...

哦,这样啊,知道了,谢谢解答!
作者: 寻找人生目标    时间: 2014-5-12 21:25
这里speak()方法后面多了个;号           

作者: 七年锦·旅行    时间: 2014-5-12 21:26
houyudong 发表于 2014-5-12 16:35
class  Person
{
    int age;

哦,这样啊,知道了,谢谢解答!
作者: 七年锦·旅行    时间: 2014-5-12 21:48
彭旭文 发表于 2014-5-12 17:33
void speak()后面多了一个“;”导致程序编译出错了...

哦,这样啊,知道了,谢谢解答!
作者: 李小新H    时间: 2014-5-13 07:28
class  Person
{
     int age;
     void speak();
     {
         System.out.println("age="+age);
     }
}
void speak();后面多了一个;号!
作者: jsjchenlong    时间: 2014-5-13 07:48
解决问题的思路,已经注释到你代码出错的地方了,请看代码,希望能对你有帮助。


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();
    }
}

作者: houyudong    时间: 2014-5-16 23:58
多了一个分号,在第四行
作者: wy_heima    时间: 2014-5-18 15:00
路过~~~~~
作者: 七年锦·旅行    时间: 2014-5-23 12:16
jsjchenlong 发表于 2014-5-13 07:48
解决问题的思路,已经注释到你代码出错的地方了,请看代码,希望能对你有帮助。

谢谢解答
作者: jsjchenlong    时间: 2014-5-23 19:21
七年锦·旅行 发表于 2014-5-23 12:16
谢谢解答

客气了。。。。
作者: liang090214    时间: 2014-5-23 20:00
楼上大神已经解决。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2