java关于继承的问题!

classSuperClass3{Stringa="hello";voidtest(){//这里是构造方法么?System.out.println(a);}}public... class SuperClass3
{
String a="hello";
void test(){ //这里是构造方法么?
System.out.println(a);

}

}
public class SubClass extends SuperClass3 //输出是说SubClass 没定义时为什么?
{
String a="aaa";
public static void main(String args [])
{
SubClass bar=new SubClass();
bar.test();
System.out.println(bar.a);
}
}
展开
 我来答
greatdoudou
2012-04-23 · TA获得超过171个赞
知道小有建树答主
回答量:335
采纳率:100%
帮助的人:272万
展开全部
第一个问题,那不是构造方法,
构造方法(constructor)构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:
  1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
  2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。
  3.每个类可以有零个或多个构造方法.
  4.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。
  5.构造方法在创建对象时自动执行,一般不能显式地直接调用.
第二个问题:你的.java文件应该不是SubClass.java吧,用public修饰的类一般定义在以类名定义的.java文件里
追问
void test(){                
System.out.println(a);

}
这只是一个方法么?
追答
wdjhz
2012-04-23 · TA获得超过3529个赞
知道大有可为答主
回答量:2227
采纳率:41%
帮助的人:670万
展开全部
检查你的文件名是不是SubClass.java?一定要相同的..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xjhssg1989
2012-04-23 · TA获得超过215个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:135万
展开全部
你的输出结果应该是 hello aaa,首先test()那个不是构造方法,构造方法一般与类名相同,test只是一个包默认的成员函数。由于子类没有重写这个函数,所以子类对象bar会调用其父类的test方法,于是输出为父类的全局属性a的值:hello,而子类中那个System.out语句输出的是子类的全局属性a的值:aaa。希望对你有帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuantao123321
2012-04-23 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:63.2万
展开全部

程序没有问题

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式