Object就是java类里面的上帝(剽窃下毕老师的话)
不是Object类出问题了,是你的代码出问题了。
就拿你第一块代码来说- class ObjectDemo
- {
- public static void main(String[] args)
- {
- Object ob = new Test(); //这里建立了一个Object引用指向了一个Test对象
- //这里就是传说中的父类引用指向子类对象,也就是说实现了多态
- System.out.println(ob.talk()); //这里你就出错了,Object里面可没有talk()这个方法吧?
- }
- }
- class Test
- {
- public int talk(){
- return 6;
- }
- }
- class Test1 extends Test
- {
-
- }
复制代码 对于多态,可以总结它为:
一、使用父类类型的引用指向子类的对象;
二、该引用只能调用父类中定义的方法和变量;
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
就像上面的代码中,如果Object类里面有一个talk()方法,那么子类Test中就形成方法覆盖,那么此时就可以这么写:obj.talk(),此刻形成了多态,也就不会有错。
但是,Oject中并没有talk方法,你去使用obj.talk(),这当然会报错。
你再看看你能编译通过那块代码,不论父类Test中,和子类Test1中都有talk()方法。 |