多态
什么是多态:多种形态。
分两部分:
1、功能多态:一个行为多种实现方式 体现:重写和重载
2、形态多态:一个类型的多种表现形式比如:动物多种表现形式:猫、狗
Animal a=new Dog();//父类的引用指向子类的对象(即向上转型),反过来不行
多态的2种实现方式:
1.将父类的类型作为方法的形参 在调用方法时给他传递具体的子类对象
2.将父类作为方法的返回值类型来实现多态(计算器(工厂模式))
使用多态时一些 注意事项:
1、存在继承
2、方法重写
1、向上转型:父类引用指向子类对象
2、向下转型:父类引用显式类型转换为子类对象。
OOP优势:高度实现应用程序的可维护性、扩展性和安全性
Instanceof运算符
作用:用来判断对象的类型。
Cat c=(Cat)c1;
if(d1 instanceof Cat){
Cat c2=(Cat)d1;}
instanceof用来判断对象类型,返回值true表示类型一致,false表示类型不一致
接口
接口的概述
既是一种约定 又是一种能力 主要是用来实现功能扩展的 并且它是不关心结果
特点:
1、实现多态
2、解决了继承的单一继承的问题。
语法:
接口类:public interface 接口类名{}
子类:public class子类名 implents 接口名1,接口名2 {}
注意事项:
1、多组合,帮助程序功能与功能之间解耦,程序的扩展性好、维护性好
2、接口侧重能力,忽略实现细节
3、面向接口编程,一个接口可以同时继承多个接口
继承 单根性接口实现了多继承性
接口即是一种约定又是一种能力
判断是继承父类还是实现接口的口诀
当一个类需要继承多个父类的时候XX是XX 就用继承 XX具备XX的某种功能就用接口
如果一个类只有一个父类 优先使用接口()
抽象类里可以有抽象方法也可以有普通的方法抽象类里可以有静态变量
接口 里面的方法全是抽象方法 方法的修饰符默认都是public 里面的变量都是静态常量(不需要加修饰符)
一个类是定义成接口还是抽象类呢?
如果一个类中的方法全是抽象方法 变量都是静态常量 定义为接口