博客
关于我
抽象类和接口详解
阅读量:477 次
发布时间:2019-03-06

本文共 1651 字,大约阅读时间需要 5 分钟。

如何区分抽抽象类和接口?

在讲解Java编程时,抽象类和接口的区别总是让人感到混淆。大家可能会问:什么时候该用抽象类,什么时候该用接口?其实这个问题有一个非常直观的答案:抽象类描述的是事物的本质,而接口描述的是事物的功能。

举个简单的例子:保温杯和水杯。水杯是所有保温杯的基础,它应该设计成一个抽象类。而保温这个功能则应该设计成一个接口。这样,无论是普通水杯还是保温杯,都可以继承水杯这个抽象类,同时实现保温接口。

让我们通过代码来理解这个概念:

package zmldemo;
public abstract class Cup {
String name; // 水杯名称
String color; // 水杯颜色
public Cup() {}
public Cup(String name, String color) {
this.name = name;
this.color = color;
}
// 水杯使用说明方法
public abstract void useCup();
}
package zmldemo;
public interface BaoWen {
// 保温方法
void baoWen();
}
package zmldemo;
public class ShuaYaBei extends Cup {
public ShuaYaBei() {}
public ShuaYaBei(String name, String color) {
super(name, color);
}
@Override
public void useCup() {
System.out.println("我是" + this.color + "的" + this.name + ",我是用来刷牙的");
}
}
package zmldemo;
public class BaoWenBei extends Cup implements BaoWen {
public BaoWenBei() {}
public BaoWenBei(String name, String color) {
super(name, color);
}
@Override
public void useCup() {
System.out.println("我是" + this.color + "的" + this.name + ",我是用来喝水的");
}
@Override
public void baoWen() {
System.out.println("我能对水杯里的水进行保温");
}
}
package zmldemo;
public class CupTest {
public static void main(String[] args) {
ShuaYaBei shuaYaBei = new ShuaYaBei("刷牙杯", "红色");
shuaYaBei.useCup();
BaoWenBei baoWenBei = new BaoWenBei("保温杯", "金黄色");
baoWenBei.useCup();
baoWenBei.baoWen();
}
}

通过上述代码可以看出,抽象类和接口的主要区别在于它们的设计目的。抽象类描述的是一个事物的本质特性,而接口描述的是一个事物的功能特性。抽象类强调的是“是什么”,而接口强调的是“能做什么”。

转载地址:http://skzdz.baihongyu.com/

你可能感兴趣的文章
Nginx - Header详解
查看>>
nginx 1.24.0 安装nginx最新稳定版
查看>>
nginx css,js合并插件,淘宝nginx合并js,css插件
查看>>
Nginx gateway集群和动态网关
查看>>
Nginx Location配置总结
查看>>
Nginx Lua install
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
nginx 代理解决跨域
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
查看>>
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 多端口配置和访问异常问题的排查与优化
查看>>
Nginx 如何代理转发传递真实 ip 地址?
查看>>
Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 学习(一):Nginx 下载和启动
查看>>