| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1226 人关注过本帖
标题:为什么输出不是派生类的aaa
取消只看楼主 加入收藏
tgnian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-4-13
收藏
 问题点数:0 回复次数:4 
为什么输出不是派生类的aaa

class SuperClass
{
String a="hello";
void test()
{
System.out.println(a);
}
}
public class SubClass extends SuperClass
{
String a="aaa";
public static void main (String args[])
{
SubClass bar=new SubClass();
bar.test();
System.out.println(bar.a);
}
}

为什么 //output: hello
// aaa

下面的程序能输出派生类的Square,为什么上面的不能输出派生类的aaa
public class Rectangle
{
String name;
double length;
double width;
public Rectangle(double _length,double _width)
{
name="Rectangle";
length=_length;
width=_width;
}

public void display()
{
System.out.println( name);
System.out.println( "length:"+length);
System.out.println( "width:"+width);
}
}
public class Square extends Rectangle
{
public Square(double _side)
{
super(_side,_side);
name="Square";
}
}
public class Test
{
public static void main(String args[])
{
Square square=new Square(4);
square.display();
}
}

搜索更多相关主题的帖子: 派生类 输出 aaa 
2007-11-16 13:18
tgnian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-4-13
收藏
得分:0 
因为子类跟父类有相同名称的变量,所以会优先调用子类的
什么意思 我的例子不是调用父类的吗

2007-11-17 23:36
tgnian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-4-13
收藏
得分:0 

能否解释一下这三个有什么不同
class SuperClass
{
String a="hello";
void test()
{
System.out.println(a);
}
}
public class SubClass extends SuperClass
{
public SubClass()
{
a="aaa";
}
public static void main (String args[])
{
SubClass bar=new SubClass();
bar.test();
System.out.println(bar.a);
}
}

//output: hello
// aaa

/*
class SuperClass
{
String a="hello";
void test()
{
System.out.println(a);
}
}
public class SubClass extends SuperClass
{
public SubClass()
{
a="aaa";
}
public static void main (String args[])
{
SubClass bar=new SubClass();
bar.test();
System.out.println(bar.a);
}
}

//output: aaa
// aaa
*/

/*
class SuperClass
{
String a="hello";
void test()
{
System.out.println(a);
}
}
public class SubClass extends SuperClass
{
public SubClass()
{
String a="aaa";
}
public static void main (String args[])
{
SubClass bar=new SubClass();
bar.test();
System.out.println(bar.a);
}
}

//output: hello
// hello
*/


2007-11-17 23:41
tgnian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-4-13
收藏
得分:0 
sorry ,第一个应为
class SuperClass
{
String a="hello";
void test()
{
System.out.println(a);
}
}
public class SubClass extends SuperClass
{

String a="aaa";

public static void main (String args[])
{
SubClass bar=new SubClass();
bar.test();
System.out.println(bar.a);
}
}

//output: hello
// aaa

2007-11-20 00:02
tgnian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-4-13
收藏
得分:0 
class SuperClass
{
String a="hello";
void test()
{
System.out.println(a);
}
}
public class SubClass extends SuperClass
{
String a="aaa";
public static void main (String args[])
{
SubClass bar=new SubClass();
bar.test();
System.out.println(bar.a);
}
}
不知道我提的问题对不对
在test()函数没覆盖前,在子类的内存中中有没有test()的内存 ,还是和父类共享一个test()
在test()函数没覆盖后,是不是在SubClass中只有String a=“aaa”,String a=“hello”,覆盖后(即子类自己定义的)test()的内存

2007-11-21 00:48
快速回复:为什么输出不是派生类的aaa
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018494 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved