对象转型、多态

1、对象转型(casting)

1)一个基类的引用类型变量可以“指向”其子类的对象;

2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法);

3)可以使用引用变量instanceof类名来判断该引用型变量所“指向”的对象是否属于该类或该类的子类;

4)子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之成为向下转型“downcasting”

 父类引用指向子类对象,只看到子类中包含父类的东西。

2、动态绑定和多态

执行期(非编译期)判断所引用对象的实际类型,根据实际类型调用其对应的方法。

优点:可扩展性好,面向对象的核心。

总结:多态机制,动态找,new的谁,调用谁的。

3个必要条件:第一要有继承,第二要有重写,第三父类引用指向子类对象

3、抽象类

用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。

含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

抽象类不能被实例化。

抽象方法只需声明,而不需实现。(为了可以重写override)

4、Final关键字

5、接口

extend只能单继承,为了实现多继承可以使用接口。

接口(interface)是抽象方法和常量值的定义的集合。

从本质上讲,接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现。

不用写abstract,实际上都是abstract。

实现多个接口,用逗号“,”隔开

类和类之间可以相互继承extend,接口和接口之间也可以继承extend,接口和类之间implement实现

接口和实现类之间存在多态性

追加书本上没有的接口知识:

再好好学习一下多态,有点忘记了:)

原文地址:https://www.cnblogs.com/yangyl-justdoit/p/6909461.html