黑马程序员技术交流社区
标题:
继承问题
[打印本页]
作者:
史小兵
时间:
2012-10-12 21:33
标题:
继承问题
public abstract class Animal {
public String name;
public abstract void enjoy();
}
class Cat extends Animal{
// super.name="haha";为什么在此处不能访问父类的name属性
@Override
public void enjoy() {
System.out.println(super.name);
}
}
作者:
张忠豹
时间:
2012-10-12 21:57
写错地方了:
public void enjoy() {
super.name="haha";
System.out.println(super.name);
}
作者:
张 涛
时间:
2012-10-12 21:57
代码要写在方法体中
属性要有类型定义
你那个两个都不是
作者:
胡斌
时间:
2012-10-12 22:19
abstract class Animal {
public String name;
public abstract void enjoy();
}
public class Example extends Animal
{
public static void main(String[] args)
{
////为什么在此处不能访问父类的name属性
// @Override
new Example().enjoy();
}
public void enjoy()
{
super.name="haha";
System.out.println(super.name);
}
}
作者:
yangfengxiao
时间:
2012-10-12 22:22
我个人的看法是:java虚拟机在加载Cat类时发现Cat继承Animal抽象类(你的代码中Animal可以看做接口)会先加载Animal类后加载Cat类,此时在Animal类中有一个name变量 Cat类中也有一个变量name,Cat复写enjoy方法时,super.name="haha";代表访问父类中的变量name ;如果是this.name="haha"的话就代表访问的是Cat类中的变量name。
作者:
曾浩
时间:
2012-10-14 12:51
在java中类成员变量只一次声明和赋值,多次赋值操作得在方法内进行
当Cat类继承类Animal后 Cat类也就继承了 name这个属性了 也就是说在Cat类中有super.name
其实简单来说就是 public int a = 2;a = 4;这样是不行的
对于为什么不能再main方法中使用:main是static类型的 而 name属性是非static类型
不知道这样解释 是否可以
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2