多态
来源:互联网 发布:新开淘宝店铺怎么经营 编辑:程序博客网 时间:2024/05/20 17:08
多态
里氏转换原则:
a)子类可以赋值给父类(如果有一个地方需要一个父类作为参数,那么可以拿一个子类来代替)
b)如果父类中装的是子类,那么这个父类可以强转成子类
eg:Person p=new Teacher();
Teacher t=(Teacher)p;
is:类型转换,如果转换成功,返回一个true,否则返回一个false
as:类型转换,如果能够转换,那么返回这个类型的对象,否则返回一个null
多态定义:让一个事物表现出多种形态(类型)
实现多态的三种方法:1.虚方法 2.抽象类 3.接口
虚方法
步骤:a)定义一个父类,这个父类的方法带有virtual修饰符,该修饰符说明了这个父类的子类可以重载这个方法
b)每个继承父类的virtual修饰方法的子类,都要在方法前加override。
抽象类(当父类的方法不知道怎么样去实现的时候,可以考虑将父类写成抽象类,把方法写成抽象方法)
用abstract标记抽象类和抽象方法,继承父类的子类必须重写父类的方法
具体调谁的方法 就要看父类中装的是哪个子类对象
抽象类的特点:
1)抽象成员必须标志成abstract并且不能有任何的实现。
2)抽象成员必须包含在抽象类中
3)抽象类不能被实例化
4)子类继承抽象类后,必须把父类中所有抽象成员都重写(除非子类也是抽象类,则可以不重写)
5)抽象成员的访问修饰符不能使private
6)抽象类中可以包含实例成员,并且抽象类的实例成员可以不被子类实现
7)抽象类是有构造函数的,虽然不能被实例化
8)如果父类的抽象方法有参数和返回值,则子类在实现这个方法的时候也必须传进对应的参数和返回值
接口:InterFace
语法:interface 类名 {} 类名一般以I开头able结尾 代表一种能力
虚方法 抽象类 接口选择:
1)如果父类中有默认的实现,并且父类需要被实例化,这时可以考虑把父类写成一个普通类,用虚方法实现多态
2)如果父类没有默认的实现,父类不需要被实例化,则可以将这个类定义成抽象类
3)接口代表一种能力 如果子类中有一种共有的能力的方法 这时候可以考虑把方法写到接口中
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 从零开始安装配置Hadoop 2.7.2+Spark 2.0.0到Ubuntu 16.04
- ubuntu 配置 nfs 服务器
- mybatis系列-1-历史
- weex初试记录
- 基础总结篇之一:Activity生命周期
- 多态
- python之禅
- Solr suggest配置
- MFC中资源视图不能打开
- Struts2学习记录2(ValueStack(值栈)和ognl)
- iframe标签
- SpringMVC+Maven 开发环境搭建
- Centos 7 最小化安装后所需要的常用配置安装
- Spring Boot相关概述