黑马程序员技术交流社区
标题:
关于多态中变量的问题
[打印本页]
作者:
黑马-李嘉欣
时间:
2013-3-13 11:57
标题:
关于多态中变量的问题
class Fu
{
static int num=3;
void method1()
{
System.out.println("fu method_1");
}
void method2()
{
System.out.println("fu method_2");
}
static void method4()
{
System.out.println("fu method_4");
}
}
class Zi extends Fu
{ static int num=66;//"China";
void method1()
{
System.out.println("zi method_1");
}
void method3()
{
System.out.println("fu method_3");
}
static void method4()
{
System.out.println("zi method_4");
}
}
class DuoTaiDemo4
{
public static void main(String[] args)
{
Fu f=new Zi();
f.method1();//结果是zi method_1,因为父类中method1被覆盖。
f.method2();//fu method_2,因为子类继承了父类的method2方法。
//f.method3();编译失败,父类引用不能调用子类特有方法,
//因为此时子类对象在编译时并没有创建
/*注意*/ f.method4();//结果fu method_4,因为static函数在类加载时就已经存在
//而不需要对象,即不参考右边的子类对象,和子类没关系。
System.out.println(f.NUM);
}
}
关于多态模式,子父类变量的提问:
1.父类中变量static修饰符起到了什么作用?去掉的话,不影响结果,为什么还要带着?
2.在多态中,实际存在着变量的覆盖关系吗?能说一下当中的运作过程就再好不过了。
谢谢~
作者:
冷叙辰
时间:
2013-3-13 12:31
1、static的用处就是声明是静态的,也就是在类加载时就可使用了,并不依赖于对象,去掉了就必须依赖于对象来使用。
一般使用静态变量是是这么用的。
System.out.println(Fu.num);
复制代码
2、同名了就是子类是重写了父类的属性了
作者:
王洪宇
时间:
2013-3-15 20:24
属性不存在多态。声明时的引用是谁的,引用.属性就是谁的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2