面试——谈谈你对抽象和接口的理解(小知识大考点)

经典回答

接口和抽象是Java 面向对象设计的两个基础机制。

接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到API 和实现分离的目的。它不包含任何非常量的变量,同时没有方法实现。JDK1.8 后引入的default 后可以。用关键字implements 实现。

抽象类是不能实例化的类,用关键字abstract 修饰,其主要目的是代码重用。除了不能实例化,形式上和一般的 Java 类并没有太大区别,可以有一个或者多个抽象方法,也可以没有抽象方法。抽象类大多用于抽取相关 Java 类的共用方法实现或者是共同成员变量,然后通过继承的方式达到代码复用的目的。

一个类可以单继承多实现。

以下为网上摘取的不同点:

考点分析

接口和抽象的区别是面试中经常问到的考点。虽然很简单,但是往深了想其实还是有很多值得我们在意的地方。主要是设计方面的问题。

考点一:Java 为什么是单继承多实现?

我们都知道C++ 可以实现多继承。但是多继承会出现菱形继承的问题:A 类实现了一个方法,B、C类分别继承与A 并重写了这个方法,D 类继承B、C 但是不知到该调用谁的方法。虽然C++ 提供了解决办法(好像是虚继承),但是还是不方便。Java 因此摒弃了多继承。

为什么可以多实现呢?首先接口不可能出现菱形继承关系:A 接口被B、C 类实现,D 因为单继承只能选择一个来进行继

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值