接口与抽象类(深入多态)

1、通过将类标记为抽象类,即abstract,则这个类不能被初始化,即不可以创建出任何的实例对象。

2、抽象的方法:出了抽象类之外,方法也可以被声明为abstract,被声明为abstract 的方法没有实体,代表此方法一定要被覆盖过。当然抽象的类也一定要extends过。

3、如果声明出一个抽象的方法,那么就必须将类也标记为抽象的,不可以在非抽象的类中声明抽象的方法。

4、在java中所有的类都是从Object这个类继承出来。由于每个类都是Object的子类,所以A rrayList可以处理所有的类。没有直接继承过其他类的类会是隐含的继承对象。例如Dog类没有直接继承Object对象,但是实际上是通过animal继承了Object对象。

5、Object类不是抽象类,因为其是可以被实例化的,其实其可以被所有类继承下来的方法都可以实现程序代码。Object类的意义:作为多态让方法可以应付多种类型的机制,以及提供java在执行期间对任何对象都有需要的方法的实现程序代码。

6、编译器是根据引用的类型来判断有哪些method可以使用,而不是根据Object确定的类型。

7、当你把对象装进ArrayList<Object>时,不管它原来是什么,你只能把它当做Object,从ArrayList<Object>取出引用时,引用的类型只会是Object.

当然可以对其进行强制转换,例如:Object o=a1.get(index); Dog d=(Dog)o; d.roam();在转换之前可以使用instanceof 进行检测。这样子若是转换出错,则会在执行期与与遇到classCastexception异常终止。

更多嵌入式linux及编程学习交流的文章,请访问我的个人网站”恩享网” :http://www.enxiang.icoc.cc,期待与您共同进步。

原文地址:https://www.cnblogs.com/LJTbozai/p/3059476.html