当子类想对继承自父类的方法有不同实现时就用到了覆盖。
注意事项:
--试图用子类的静态方法隐藏父类中同样标识的实例方法是不合法的,编译器将会报错
--试图用子类的实例方法覆盖父类中同样标识的静态方法也是不合法的,编译器会报错
--静态方法和最终方法(带关键字final的方法)不能被覆盖
--实例方法能够被覆盖
--抽象方法必须在具体类中被覆盖
1、对于成员变量,无论是编译还是运行都参考左边,
Rootb stb = new Stemb(47);
System.out.println (stb.x); //这里是Rootb类型所以输出是1
System.out.println (((Stemb)stb).x); //这里强转所以为2
2、对于成员方法,编译看左边,运行看右边
3、对于静态方法无论编译还是运行都参考左边
希望对你有所帮助 |