class A
{
int x;
}
public class B extends B
{
int x;
public static void main(String args[])
{
x=2;//调用的B里面的x
super.x=2;//我想调用父类的x,为什么编译器显示错误,该怎么改?先谢谢了!
}
} 作者: 张旺达 时间: 2013-4-13 11:51
class B extends B?作者: 李易烜 时间: 2013-4-13 12:04
帅哥,你B类继承的谁呢,改继承A作者: Asan 时间: 2013-4-13 12:06
你的B继承B?而且super也不是那样用的,你应该是看视频的吧!你仔细看看老师是怎么讲的,怎么写的!作者: 通行天下 时间: 2013-4-13 12:26
class A
{
int x;
}
public class B extends B
{
int x;
public static void main(String args[])
{
x=2;//调用的B里面的x
super.x=2;//我想调用父类的x,为什么编译器显示错误,该怎么改?先谢谢了!
}
作者: 崔宝东 时间: 2013-4-14 08:45
class A
{
int x;
}
public class B extends A
{
int x;
public static void main(String args[])
{
/**因为主函数是静态的;
* 首先x=2;编译失败是因为静态是不能访问非静态成员的;
* 还有就是静态函数里面是不能用super和this等关键字的,所以 super.x=2编译失败;
*
* 我们这里想要调用父类中的成员变量,可以采用对外创建一个非静态的方法,然后进行调用。
*/
// x=2;//调用的B里面的x
// super.x=2;//我想调用父类的x,为什么编译器显示错误,该怎么改?先谢谢了!
B b = new B();
b.getvalue();作者: 庄生晓梦 时间: 2013-4-14 10:39
因为主函数是静态的,所以x=2编译失败因为静态是能访问非静态成员的;
想要调用父类中的成员变量x,可以通过子类对象调用;
静态中是不会使用this、super的,因为静态成员优先于对象存在。作者: gerenvip 时间: 2013-4-14 13:10
如果子类中出现了非私有的同名成员变量时,子类要访问本类中的变量,用this
子类要访问父类中的同名变量,用super
super代表父类对象的引用。this代表子类对象的引用。