里氏替换原则和多态的应用
里氏替换原则(LSP)
·在一个软件系统中,子类对象可以替换所有使用的父类对象,
且程序行为没有变化
·父类中的子类进行转换
1、SE se = (SE)empls;类型转换
2、SE se = empls as SE;类型转换,如果不是同一类型,输出null,也会报错
·使用父类作为参数使用,可以接收多种子类类型
·根据实际传递的子类对象执行相对应子类的方法进行重写
小结:
用虚方法实现多态的步骤
@子类重写父类的虚方法
@两种方式
创建父类变量,实例化子类对象
把父类类型作为参数类型,该子类及子类对象作为参数传入
@运行时,根据实际创建的对象决定执行那个方法
里氏替换原则
@子类对象可以代替父类对象,反过来,父类对象不能代替子类对象
@会使用父类类型作为参数
@is操作符用于检查对象和指定的类型是否兼容
@as操作符用于两个对象之间的类型转换
抽象类和抽象方法
抽象类用来列举一个类所需要的行为
抽象类不明确提供具体实现方法
抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性)
@抽象类不能被实例化
@抽象类不能是密封的或静态的(抽象类不能用seald或static修饰)
抽象类和抽象方法
@抽象类通常代表一个抽象的概念
@抽象方法约束子类对象的行为
@比如:抽象的动物类,具有抽象方法吃()、喝()
虚方法
@具体类的默认实现、提供其子类扩展实现方式
@比如:数据库链接类,Connect()方法实现与SQL Server的链接,数据库链接子类继承并重写,实现与其他数据库的链接
面向对象的三大特征
封装:
隐藏内部实现,稳定外部接口
继承:
子类继承父类成员,实现代码重用
多态:
不同子类对同一个消息作出不同的反应
总结:
抽象方法
是一个未实现的方法
用abstract关键字修饰
含有抽象方法的类必然是抽象类
使用抽象方法和虚方法都可以实现多态性
面向对象的三大特性是封装、继承和多态