1:
JAVA-傻子(373481014) 15:12:26
1.同名的实例方法被覆盖 ,同名的静态方法被隐藏,child类的getName实例方法覆盖了parent的getName实例方法,chind的getKind方法隐藏了parent类的getKind方法
2.隐藏 和覆盖 的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖 的方法
3.如果需要访问父类被隐藏 的实例变量,加上super就好了,比如访问父类的name,写上super.name就好了
JAVA-武汉学生(47013027) 15:15:02
JAVA-武汉学生(47013027) 15:15:20
JAVA-武汉学生(47013027) 15:15:34
既然没有错误?这是为什么
JAVA-武汉学生(47013027) 15:16:46
父类和子类里面都有自己的public的成员变量geshi
For_Funs(877083316) 15:17:29
成员变量在子类中会被隐藏
JAVA-武汉学生(47013027) 15:17:50
哦
JAVA-傻子(373481014) 15:18:17
1.不能用子类的静态方法隐藏 父类中同样标示(也就是返回值 名字 参数都一样)的实例方法
2.不能用子类的实例方法覆盖 父类中同样标示的静态方法
3.这点儿请注意,就是变量只会被隐藏 不会被覆盖,无论他是实例变量还是静态变量,而且,子类的静态变量可以隐藏父类的实例变量,子类的实例变量可以隐藏 父类的静态变量
1.同名的实例方法被覆盖 ,同名的静态方法被隐藏,child类的getName实例方法覆盖了parent的getName实例方法,chind的getKind方法隐藏了parent类的getKind方法
2.隐藏 和覆盖 的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖 的方法
3.如果需要访问父类被隐藏 的实例变量,加上super就好了,比如访问父类的name,写上super.name就好了
JAVA-武汉学生(47013027) 15:15:02

JAVA-武汉学生(47013027) 15:15:20

JAVA-武汉学生(47013027) 15:15:34
既然没有错误?这是为什么
JAVA-武汉学生(47013027) 15:16:46
父类和子类里面都有自己的public的成员变量geshi
For_Funs(877083316) 15:17:29
成员变量在子类中会被隐藏
JAVA-武汉学生(47013027) 15:17:50
哦
JAVA-傻子(373481014) 15:18:17
1.不能用子类的静态方法隐藏 父类中同样标示(也就是返回值 名字 参数都一样)的实例方法
2.不能用子类的实例方法覆盖 父类中同样标示的静态方法
3.这点儿请注意,就是变量只会被隐藏 不会被覆盖,无论他是实例变量还是静态变量,而且,子类的静态变量可以隐藏父类的实例变量,子类的实例变量可以隐藏 父类的静态变量
2:
2009-09-14 walsh (资深程序员)
- class Foo {
- public int a;
- public Foo() {
- a = 3;
- }
- public int addFive() {
- a += 5;
- return a;
- }
- public int getA() {
- return a;
- }
- }
- public class Bar extends Foo {
- public int a;
- public Bar() {
- a = 8;
- }
- public int addFive() {
- this.a += 5;
- return a;
- }
- public int getA() {
- return a;
- }
- public static void main(String[] args) {
- Foo foo = new Bar();
- //调用的是子类中的方法
- System.out.println(foo.getA());
- //直接调用父类中的a
- System.out.println("Value: " + foo.a);
- //调用的是子类中的方法
- System.out.println(foo.addFive());
- }
- }
8
Value: 3
13
楼主,只需要明白一点就行了:在Java中重写指的是方法的重写,而不是属性的重写,还有多态也只是方法的多态 ,没有属性的多态。