一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
抽象类和接口
抽象类的用法
- 概念:客观世界中相类似的事物经过分析抽象就形成了类,(类实例化就变成了对象)。
抽象类
- 抽象类可以有构造函数,是为子类准备的,在被继承的时候,子类用super()调用父类的构造函数
- 一个类没有足够明确的信息来描述刻画对象时,这个类就可以定义成抽象类。
- 格式:abstract class 类名 { //抽象类 …… //类体 }
- 子类无需定义成abstract
- 抽象类的作用
- 子类可以直接继承抽象类的属性和已经实现的方法;
- 为子类的方法制定了规范,因为子类必须按照抽象类中定义的抽象方法的名称、格式来实现抽象方法;
- 子类可以按照自己的情况来个性化实现抽象方法,从而实现了多态。
- 抽象类不能直接用new实例化,抽象类可以被继承,所以不允许被定义成final类;
抽象方法
- 一个方法不能明确如何实现时,这个方法就要定义成抽象方法。
- 格式:[修饰符] abstract 返回值类型 方法名([参数列表]);
- 子类中的方法无需定义成abstarct
- 抽象方法只有声明,没有实现;
- 包含抽象方法的类必须定义成抽象类;
转型
- 向上转型
- 把一个子类的对象转成一个父类的对象
Shape shape1=new Circle(3);//shape 是父类,Circle是子类- 需要有相同的构造方法
- 安全
- 向下转型
- 把一个父类对象转到一个子类对象
- 需要有相同的构造方法
Circle c1=(Circle)shape1//shape 是父类,Circle是子类
接口
- 定义
- 是一些抽象方法的声明和集合,不同的类可以有不同的实现。
- 接口的定义跟外部类相似,只能定义成public权限或者默认权限。
- 一个类只能继承另外一个类,但一个接口可以同时继承多个接口,多个接口之间用英文逗号分隔开
- 没有构造函数
- 格式
- [public] interface 接口名 [extends 父接口名列表] { [public] static final 类型 varable=value;//常量列表 [public] abstract 类型 methodName(参数列表);//抽象方法列表 }
接口与抽象类
- 接口比抽象类更抽象,主要差别
- 类能实现多个接口,只能继承一个类,抽象类的子类仍可实现接口。接口可以支持多继承;
- 抽象类中可以有普通方法,接口里的方法都是抽象方法,且都是public方法;
- 抽象类中的成员变量可以被不同的修饰符来修饰,可以有实例变量,也可以有类变量,接口中的成员变量是public、static、final的变量;
- 抽象类中有构造方法,接口中不能有构造方法。
- 应用场景
- 把现实问题抽象出来后更符合类的特征,抽象类
- 具有实例变量、非抽象的方法
- 只能抽象出需要规范的功能方法,接口
- 这些方法不知道如何实现,需要在子类再实现,不能抽象出实例变量,
一个类实现接口
- 用implements关键字
- 类修饰符] class 类名[ extends 父类名 ][ implements 接口名列表 ] { 成员变量定义; 成员方法定义; }
多态
- 概念:实现接口的多个类 or 一个父类的多个子类虽然有相同的方法,但是具有不同的表现方式。
- 两种实现形式
- 方法的重载
- 一个类中定义了多个名字相同、参数不同的方法
- 方法覆盖
- 概念:子类覆盖父类的方法或类实现接口的方法
内部类
- 概念
- 把类定义在另一个类的里面
- 属于外部类的成员,可以很方便的访问外部类定义的成员变量和成员方法
- 4种形式
- 实例成员内部类
- 类体内部、方法外面,与实例变量的地位一样
- 属于外部类的对象所有,存在于对象的内存空间
- 创建了外部类的对象后,才能使用该内部类
- 静态内部类
- 相当于内部类定义成static
- 存在于外部类的内存空间
- 静态内部类不能访问外部类的实例变量和实例方法,只能访问外部类的static的成员变量和成员方法。
- 局部内部类
- 方法体内的类
- 作用域只是所在的方法内
- 匿名内部类
- 没有名字的内部类
- 一般用在图形界面中,用于做事件监听器
- 创建匿名内部类必须事先有一个接口或者父类,把内部匿名类定义为接口的一个实现类或者是某个父类的子类。



面向接口编程
- 先把客户的业务逻辑功能提取出来,作为接口,设计系统时主要设计各种接口,通过各种接口之间的交流形成一个系统,而每种接口的具体行为表现交给接口的各种实现类来完成
- 将具体接口逻辑与实现分开,减少了各个模块之间的相互依赖。当某个实现类变化时,不需要对已经编写的系统进行改动,添加新的实现类就可以了,不用担心新改动的类对系统的其他模块造成影响。其遵循的思想是:对扩展开放,对修改关闭。
Prev
继承
Next
异常
Loading...