请java大神帮帮忙。。

风隐若现 2013-11-22 02:46:50
package simple;

public class test1 {
static int x=100;
static void m(){
System.out.println(x);

}
}
class test2 extends test1{
static int x=200;
static void m(){
System.out.println("x="+x);
System.out.println("super.x="+super.x);//出错了
super.m();// 出错了
}
public static void main(String args[]){
//test1 a=new test1()
test1 a=new test2();
a.m();
System.out.println(a.x);
}
}
为什么不能调用父类的方法跟属性了?
...全文
561 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuer0520 2013-11-28
  • 打赏
  • 举报
回复
static 是共有的,不用你new一个对象再去调用
凝望_Ing 2013-11-28
  • 打赏
  • 举报
回复
不用super 指点类名点就可以用
爪哇三郎 2013-11-25
  • 打赏
  • 举报
回复
楼主刚学java吧?
小明再现江湖 2013-11-25
  • 打赏
  • 举报
回复
你的x被静态修饰,静态变量随着类的加载而加载,是先于对象存在的。System.out.println("super.x="+super.x);//出错了 这语句需要在建立对象后才能执行,而"super.x="+super.x中的x是静态,先于对象存在,在这里肯定不能用。 2.还有引用楼上那位的一句话,static方法内不能有this,super关键字。道理也是静态修饰的成员变量或成员方法,先于对象存在,super和this关键字是有了对象才能用。当类初始化时,静态修饰的成员变量或成员方法跟随着加载,可这个时候还没建立对象,你把super和this放在那里,肯定识别不了。 希望对你有帮助
浪漫小和 2013-11-23
  • 打赏
  • 举报
回复
可能是static的原因。
xiaomm627 2013-11-22
  • 打赏
  • 举报
回复
静态方法和变量是直属于类的,不能通过对象调用。 如果想要调用父类的方法和变量,你这样写继承没有意义。
青山丶 2013-11-22
  • 打赏
  • 举报
回复
静态方法中不能出现this(当前对象的引用)或super(父类对象的引用), 静态方法又叫类方法,用于维护静态属性(即类属性),类属性在类中只有一份。 若想在静态方法中使用当前类的静态属性(如x),只需要写静态属性名即可,例如: System.out.println(x); 也可以写成 System.out.println(Test2.x); 若想在静态方法中使用父类的静态属性,只需要写“父类名.静态属性名”即可,例如: System.out.println(Test1.x); 希望我的回答能帮到你~
teemai 2013-11-22
  • 打赏
  • 举报
回复
static 的变量和方法用 类名. 调用 如: public static void main(String args[]){ System.out.println(test1.x); test1.m(); } 如果是测试成员变量,把static去掉。 ps:类名首字母大写
acefr 2013-11-22
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/290050251 自己看下吧
少羽 2013-11-22
  • 打赏
  • 举报
回复
还有楼主的代码很明显会报错的,不信自己去试试!
少羽 2013-11-22
  • 打赏
  • 举报
回复
难道楼主的结果不是打印 100?? 要不楼主再去试试! 这个不是调不调用父类属性和方法的问题,楼主的属性和方法都是static,也就是静态的,静态的属性和方法是属于类的,而不是属于方法的,所以楼主调用 a.m()和输出a.x都是应该是用a这个类的方法和属性,虽然a这个类是用子类new出来的,但是a的类本身还是属于父类的,所以a.m()和a.x结果都应该是父类的方法和属性,也就是100 以上纯属一个观点,谢谢!
时光清浅 2013-11-22
  • 打赏
  • 举报
回复
声明为static的方法有以下几条限制:   1、它们仅能调用其他的static 方法。   2、它们只能访问static数据。   3、static方法内不能有this,super关键字
tony4geek 2013-11-22
  • 打赏
  • 举报
回复
static 这些去掉。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧