question:1、 为什么子类的方法可以覆盖父类的方法,但是子类的常量不能覆盖父类的常量。
2、多态的机制是编译与运行时的对象发生变化了是吧,但是究竟运行时创造的是父类还是子类,如果是父类,为什么方法会被重写,如果是子类,为什么类成员变量AGE是父类的或者发生了其他的情况吗?谢谢
- class Parent
- {
- public static String NAME = "我是父亲!";
- public int AGE = 36;
- public void earnMoney()
- {
- System.out.println("父亲能挣多钱!");
- }
- public void spendMoney()
- {
- System.out.println("父亲很节省!");
- }
- }
- class Son extends Parent
- {
- public static String NAME = "我是儿子";
- public int AGE = 12;
- public void spendMoney()
- { System.out.println("儿子很能花钱!"); }
- public void play()
- { System.out.println("儿子很贪玩!"); }
- public static void main(String[] args)
- {
- Parent pa = new Son();//多态发生;
- pa.spendMoney();//输出结果为“儿子很能花钱!”;
- System.out.println("pa的年龄为:"+pa.AGE);//输出结果为:36;
- pa.earnMoney();//输出结果为:父亲很能赚钱!;
- System.out.println("Parent.NAME= "+Parent.NAME);
- System.out.println("Son.NAME= "+Son.NAME);
- //System.out.println( "强制转换父类方法:"+(Parent)pa.spendMoney );
- //System.out.println("强制调取子类成员变量:"+(Son)pa.AGE);
-
- }
- }
复制代码
/**
结果为:
D:\>java Son
儿子很能花钱!
pa的年龄为:36
父亲能挣多钱!
Parent.NAME= 我是父亲!
Son.NAME= 我是儿子
*/ |