标题: 继承问题 [打印本页] 作者: 王红霞 时间: 2012-7-13 18:09 标题: 继承问题 class Fu
{
int num=4;
void show()
{
System.out.println("showFu");
}
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println("showZi");
}
}
class T
{
public static void main(String[] args)
{
Fu f=new Zi();//这句代码该如何理解?
Zi z=new Zi();
System.out.println(f.num);
System.out.println(z.num);
f.show();
z.show();
}
}
为什么输出结果是:
4
5
?作者: 苑占丽 时间: 2012-7-13 18:18
class Fu
{
int num=4;
void show()
{
System.out.println("showFu");
}
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println("showZi");
}
}
class T
{
public static void main(String[] args)
{
Fu f=new Zi();//这句代码该如何理解?在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
class Fu
{
int num=4;
void show()
{
System.out.println("showFu");
}
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println("showZi");
}
}
class T
{
public static void main(String[] args)
{
Fu f=new Zi();//这句是对象的多态,父类引用指向子类对象
Zi z=new Zi();
System.out.println(f.num);//这句话是输出父类引用的成员变量
//多态中成员变量的特点:无论编译和运行,都参考左边(引用类型变量所属的类)。
//输出4
System.out.println(z.num);//子类引用指向子类对象,调用子类自身的成员变量
// 输出5
f.show();//父类引用指向子类对象,由于子类把show方法重写,所以执行子类的show方法。如果没有重写该方法他会执行父类的该方法
//在多态中非静态成员函数的特点:
//在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
//在运行时期:参阅对象所属的类中是否有调用的方法。
//简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
作者: 王飞 时间: 2012-7-13 18:42
class Fu
{
int num=4;
void show()
{
System.out.println("showFu");
}
}
class Zi extends Fu
{
int num=5;
void show()
{
System.out.println("showZi");
}
}
public class cc
{
public static void main(String[] args)
{
Fu f=new Zi();//这句代码该如何理解?----------》》》这是面向父类编程,多态
//比如: 我要一个动物,你可以给我一个小狗啊小猫之类的都行, 也就是动物类对象可以指向它的子类对象(猫,狗)
//例如:动物 dw = new 动物();
动物 dw = new 猫();
动物 dw = new 狗();
都可以。
成员变量不存在覆盖
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
Zi z=new Zi();
System.out.println(f.num);
System.out.println(z.num);