为了账号安全,请及时绑定邮箱和手机立即绑定

java的一个小小问题,有没有人能帮我看看

java的一个小小问题,有没有人能帮我看看

Neilro3534034 2016-06-19 22:30:12
class A {     int age; } class B extends A {     String name; } class C extends B {     age = 3;     name = 小明;     public void speak(){          System.out.println(name+"今年的岁数为:"+age);     }     } class Demo {     public static void main(String[] args){          C c = new C();          c.speak();     } } 为什么会显示需要标识符?
查看完整描述

3 回答

?
lvanli

TA贡献7条经验 获得超8个赞

name = 小明;这行代码暂且看做为初始化。

java中不允许直接在class里面写代码。要想做到这种初始化可以使用初始化块的方法。

初始化块的写法就是在要写的初始化代码两端加上{}。

具体代码如下:注:由于小明是字符串,需要加""进行修饰。

{

    age = 3;

    name = "小明";

}

查看完整回答
4 反对 回复 2016-06-20
?
tanhouyusheng

TA贡献94条经验 获得超59个赞

age = 3;

    name = 小明;

明显是不对啊

查看完整回答
反对 回复 2016-06-20
?
yanrun

TA贡献317条经验 获得超240个赞

因为C类中的age和name没有申明变量的类型。改成

int age = 3;
String name = "小明";

就可以了,还有就是,name是字符串类型,变量值的两边需要有双引号

查看完整回答
反对 回复 2016-06-20
  • Neilro3534034
    Neilro3534034
    可是父类A与B已经声明了变量的类型,子类继承了还需要重新声明一遍类型吗?求指教
  • yanrun
    yanrun
    需要的啊,java是强类型语言,声明的变量必须标明其类型,如果只写age = 3;age可能是int型也可能是double类型的,所以编译器需要明确知道age的类型才好在以后的操作比如类型转换时做语法检查。如果你想使用父类中的age值,可以把C类中的age变量定义删除,把speak方法改成System.out.println(name+"今年的岁数为:"+super.age);这么改的话,需要在A类中给age赋值,否则age的值会是默认值0.
  • Neilro3534034
    Neilro3534034
    噢 糊涂了 谢谢你啊兄弟
  • 3 回答
  • 0 关注
  • 1356 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信