A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
多态中成员访问特点是什么啊?有点难理解
多态的概念好多,不是很好理解!!{:2_31:}{:2_38:}

最佳答案

查看完整内容

成员变量 编译看左边(父类),运行看左边(父类) 成员方法 编译看左边(父类),运行看右边(子类)。 静态方法 编译看左边(父类),运行看左边(父类)。 (静态和类相关,算不上重写,所以,访问还是左边的) 只有非静态的成员方法,编译看左边,运行看右边

10 个回复

倒序浏览

成员变量
编译看左边(父类),运行看左边(父类)
成员方法
编译看左边(父类),运行看右边(子类)。

静态方法
编译看左边(父类),运行看左边(父类)。
(静态和类相关,算不上重写,所以,访问还是左边的)
只有非静态的成员方法,编译看左边,运行看右边
回复 使用道具 举报
多态中的成员访问特点之成员变量)
* 成员变量
        * 编译看左边(父类),运行看左边(父类)。
/*
成员变量
编译看左边(父类),运行看左边(父类)
成员方法
编译看左边(父类),运行看右边(子类)。动态绑定
静态方法
编译看左边(父类),运行看左边(父类)。
(静态和类相关,算不上重写,所以,访问还是左边的)
只有非静态的成员方法,编译看左边,运行看右边
*/
案例:
class Demo2_Polymorphic {
        public static void main(String[] args) {
                Father f = new Son();                                        //父类引用指向子类对象
                System.out.println(f.num);                        //相当于是Father.method()
      Son s = new Son();
      System.out.println(s.num);
        }
}
class Father {
        int num = 10;       
}
class Son extends Father {
        int num = 20;
}

(多态中的成员访问特点之成员方法)
* 成员方法
        * 编译看左边(父类),运行看右边(子类)。
案例:
class Demo2_Polymorphic {
        public static void main(String[] args) {
                Father f = new Son();
                f.print();                                                        //相当于是Father.method()
        }
}
class Father {
        int num = 10;
        public void print() {
                System.out.println("father");
        }
}
class Son extends Father {
        int num = 20;
        public void print() {
                System.out.println("son");
        }
}


(多态中的成员访问特点之静态成员方法)
* 静态方法
        * 编译看左边(父类),运行看左边(父类)。
        * (静态和类相关,算不上重写,所以,访问还是左边的)
        * 只有非静态的成员方法,编译看左边,运行看右边
案例:
class Demo2_Polymorphic {
        public static void main(String[] args) {
                Father f = new Son();               
                f.method();                                                        //相当于是Father.method()
        }
}
class Father {
        int num = 10;
        public static void method() {
                System.out.println("father static method");
        }
}
class Son extends Father {
        int num = 20;
        public static void method() {
                System.out.println("son static method");
        }
}
回复 使用道具 举报
其实不必想那么多看左边看右边,比如 fu f=new zi();是父类控制子类的对象实现父类中已有的东西,一切照着父类写就行了。至于实现方法反过来了?很简单啊,你这么理解,因为子类把方法重写了,重写了嘛  所以调用方法就用重写后的   这样比死背左边右边容易理解多了
回复 使用道具 举报
多态简单说就是因为子类重写了父类的方法,所以执行的时候会执行被修改以后的。
回复 使用道具 举报
看了各位大神的回复,感觉更蒙了........
回复 使用道具 举报
278008379 来自手机 中级黑马 2016-3-23 12:29:28
7#
大家说的都很好
回复 使用道具 举报
yc01 中级黑马 2016-3-23 16:07:38
8#
现在理解不了 ,就先记着结果,学的多了有空,在看前面的 ,估计能理解了.读书千遍,其义自现嘛{:2_36:}
回复 使用道具 举报
多态是父类引用子类对象;编译都看父类,,,运行时只有非静态成员方法看子类....
回复 使用道具 举报
Ak-47 中级黑马 2016-3-26 02:08:20
10#
这个要理解啊
回复 使用道具 举报
记住就行 等过一段回头一看就明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马