Object类的相关知识

在Java中所有类都是从Object这个类继承出来的,它是所有类的源头,它是所有类的父类,如果Java中没有共同的父类,那将无法写出像ArrayList这样的可以处理各种种类的类。

  例子:public  class Dog extend Obeject{}

1.提问:Object是一个抽象类吗?

回答:不是一个抽象类,因为它可以被实例化,而抽象类不能被实例化,而且没有被abstract修饰。

2.提问:Object的方法可以覆盖吗?

回答:部分可以被覆盖,但是有些被标记为final,代表你不能覆盖掉它们。

3.提问:ArrayList方法是通用的,那ArrayList<Dog>是什么意思呢?

回答:只能保存Dog的对象。

4.提问:Object的主要目的是提供多态的参数和返回类型吗?

回答:Object主要有两个目的:作为多态让方法可以应付多种类型的机制,以及提供java在执行器对任何对象都有需要的方法。

5.任何从ArrayList<Object>取出来的东西都会被当做Object类型的引用而不管它原来是什么。

6.当一个对象被声明为Object类型的对象所引用时,它无法再赋值给原来类型的变量。例如:

Object o = new Object;

o.bark();     //bark原来属于狗的方法

所以这样编译器是过不了的,因为无法再赋值给原来的类型了,但是可以使用强制转换类型把它转回去。

7.编译器是根据引用类型来判断有哪些method(方法)可以调用,而不是对象的类型。

8.在Java中的每个对象除了真正的类型外,也可以当做是Object来处理    //还可以继承Object类型的方法

一.“多态”      意味着    “很多种形式”

1.当你把对象装进ArrayList<Object>时,不管它原来装的是什么,你只能把它当做是Object类.

2.从ArrayList<Object>取出引用时,引用的类型只会是Object类,这代表你只会取得Object的遥控器(也就是引用变量)。

3.Java很注重引用变量的类型,你只能在引用变量的类确实有该方法才能调用它,把类的公有方法当作是合约的内容,合约是你对其他的程序的承诺协议。

猜你喜欢

转载自blog.csdn.net/weixin_42740360/article/details/84070045