黑马程序员技术交流社区

标题: Java编程中,子类可以用用这种方法给继承父类的成员变量... [打印本页]

作者: barrya    时间: 2014-6-18 11:48
标题: Java编程中,子类可以用用这种方法给继承父类的成员变量...
  1. <p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">各位大神,</p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">问个问题</p><p style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?</p>
复制代码



作者: barrya    时间: 2014-6-18 11:51
代码复制有误,应该是下面的:
abstract class staff
{
        String name;
        int number;
        int salary;
        int bonus;
        void show()
        {
                System.out.println(name + " :(" +number+") salary is " + salary );
        }
        abstract void bonus();
}
class manager extends staff
{
        super(name) = "Mr.Li";//可以通过这种方法给变量赋值吗??
//        salary = 50000;
        //number = 12345;
        //bonus = 100000;
        void bonus()
        {
                System.out.println(name + " :(" +number+") salary is " + bonus );
        }
}
作者: 塔罗    时间: 2014-6-18 12:01
应该是super.name="Mr.li";
作者: 唐坚    时间: 2014-6-18 13:09
不可以的。
super(name)是调用父类的构造方法。但是父类默认的构造方法是super(). 所以编译都会出错。
这样你可以在父类添加一个有参数的的构造方法。如果你要对name进行初始化,在父类中
你可以声明一个
  staff(String name)
        {
                this.name =name;
                }的构造方法。
      
但是这样做了,子类的构造方法也要改变一下。
例如:
manager()
  {
          super("张三");//对name进行初始化。那么name就有值了。
          }
第二种方法:
你可以用super.name ="张三";
super.name是对成员变量进行赋值操作,它只能在方法体内进行。不能写在成员变量的位置上。
所以你可以写在bonus()这个方法体内。
那么name就有值了。
作者: 马宁    时间: 2014-6-18 13:15
来学习一下 !
作者: 闪耀.Q    时间: 2014-6-18 13:20
super(name) = "Mr.Li"; 这里不对。可以在父类中写一个构造函数
staff(String name)
{
       this.name =name;
}





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