多态/接口/抽象类
来源:互联网 发布:mac显示磁盘 编辑:程序博客网 时间:2024/05/19 22:25
一.多态
1.三个必要条件
1)条件1:必须有继承关系(如果没有继承关系,谈不上多态!)
2)条件2:必须有方法重写
子类出现了父类一样的 方法声明
3)有父类引用指向子类对象:向上转型
Fu f = new Zi() ;
多态的三个条缺一不可!
2.多态成员访问特点
(1)成员变量
编译看左,执行看作
(2)成员方法
便宜看左,执行看右,由于存在方法重写,所以最终的就是子类的成员方法
(3)静态成员方法(静态直接和类有关系,方法不能重写)
编译看左,执行看左
(4)构造方法
存在继承关系,还是分层初始化
3.多态的好处
1.提高代码的维护性(由继承保证)
2.提高代码的扩展性(由多态保证)
4.多态的弊端
1.不能访问子类的特有的成员方法
解决方法:向下转型
Animal3 a = new Cat3() ; //向上转型 Cat3 c = new Cat3() ;//新建对象,需要堆内存开辟空间,浪费内存 //父类的引用强制转换为子类的引用 Cat3 c = (Cat3) a ;
二.抽象类
抽象类的概念:
每一个动物的吃和睡的功能不一样,不应该把动物类定义为一个具体类,而是给出一个声明(abstract)
当一个类中如果有抽象功能(抽象方法)的时候,那么这个类一定要定义为抽象类!
问题:一个抽象类中可以有非抽象方法吗?
一个抽象类中可以抽象,也可以有非抽象的(作为一个判断题记忆!)
抽象类不能实例化:抽象类不能创建对象那么一个抽象类如何进行实例化:
通过抽象类多态形式:父类的引用指向子类对象,通过子类进行初始化!
抽象类的子类的特点:
抽象类的子类是抽象类,那么没有意义!
最终使用的就是通过子类进行对象初始化的,如果子类都被抽象修饰了,那么也不能创建对象,所以没意义
抽象类多态:
强制子类必须重写当前抽象的父类中所有的抽象方法
还可以提高代码的维护性(里面继承关系保证!)
三.接口
1.接口的概念的一种扩展功能
interface 接口名{//接口里面的方法}
2.接口的实现
接口的子实现类:
1)接口的子实现类是抽象类,没有意义,子类都不能创建对象了;实际开发中用的就是子类的对象进行初始化!
2)接口的子实现类是非抽象类
接口的实例化:就是通过子实现类对数据进行初始化!
class 类名 implements 接口名{}
3.接口的特点
1.成员变量
默认修饰符public static final
2.成员方法
默认修饰符 public abstract
3.构造方法
接口是没有构造方法的
四.总结
类与类的关系:
继承关系:extends,java中只支持单继承,不支持多继承,但是可以多层继承!
类与接口的关系
实现关系:implements,并且,一个类在继承另一个类的同时,可以实现多个接口
(class 子实现类名 enxtends Object implements 接口名1,接口名2…)
接口与接口的关系
继承关系:extends,可以支持单继承,也可以多继承!
- 多态,抽象类,接口
- 抽象类、接口、多态
- 多态、抽象类、接口
- 抽象类 接口 多态
- 多态、抽象类、接口
- 多态,抽象类,接口
- 抽象类 接口 多态
- 多态,抽象类,接口
- 抽象类 接口 多态
- 多态 抽象类 接口
- 多态,抽象类,接口
- 多态-抽象类-接口
- 多态/接口/抽象类
- 继承、多态、抽象类、接口
- 接口,抽象类,继承,多态
- 5 多态 抽象类 接口
- 继承,抽象类,接口,多态
- 继承、多态、接口、抽象类
- 大数据之路-MAC中VMwareFusion安装CentOS6.8
- COM学习(三)——COM的跨语言
- JSP基础(十六)——使用JDBC进行批处理
- linux自动安装系统脚本
- webstorm使用日记_代码测试
- 多态/接口/抽象类
- 关于如何用线段树实现查找区间内第一个小于(大于)某一值x的方法
- js文件保存的相关学习
- opencv学习笔记——滑动条的创建和使用
- spring 的Ioc和DI
- Android 背景图片轮播
- mybatis实现网上商店一(建数据库,写实体类)
- htlm5
- Spring 学习笔记(1)—— 通过一个小例子体会 IoC 的概念