面试题系列之接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类?抽象类中是否可以有静态的main方法?

本文探讨了Java面试中关于接口和抽象类的问题,包括接口是否可继承接口,抽象类是否可实现接口,抽象类是否可继承具体类,以及抽象类中是否可以有静态的main方法。接口可以继承接口,抽象类可以实现接口并可继承具体类,同时抽象类中可以包含静态的main方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个面试四连击的题目:接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类?抽象类中是否可以有静态的main方法?
上面这个题目我们来慢慢的剖析一下。先从基本的概念说起。

一、接口

官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
又到了我最喜欢打比方的环节了:我们身边最常见的接口就是电脑的usb接口了。我们可以想想,我们电脑的usb接口是不是就那么几个但是没有任何的具体的功能?但是当我们把u盘插到usb接口的时候,我们可以进行数据的传输;
当我们把鼠标插入usb接口的时候,我们可以左键打开网页、文件夹等更多的功能;当我们把键盘插入到usb接口的时候我们可以打字,等等。虽然接入不同的设备可以进行不同的操作,但是上述的设备操作都是和电脑的数据交互。
所以电脑在设置usb接口的时候,并没有实现具体的读写数据的功能,而是但不同的设备接入usb接口就可以实现不同的数据读写功能。这就是接口的好处,试想:如果每个接口都有特定的功能,鼠标要插这个接口,键盘插那个接
口。那电脑就全是接口了,大大的浪费了资源,而且还不好看。

接口的特点以及重点:
1、并不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的。但是,我们可以使用接口类型的引用指向一个实现了该接口的对象(键盘、鼠标,…),并且可以调用这个接口中的方法。
2、一个类可以实现不止一个接口。键盘可以连接戴尔的接口、华硕的接口、联想的接口。
3、接口也可以继承,并且可以多继承。一个接口可以继承于另一个接口,或者另一些接口。比如现在的很多人电脑的usb接口不够用,所以有了usb接口拓展。
4、接口中所有的方法都是抽象的和public的,所有的属性都是public,static,final的。
5、一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法。我们在使用编辑器编写的时候就会自动提示:
在这里插入图片描述
否则的话会报错:
在这里插入图片描述
接口的实例:

public interface Demo8 {
   
	void say();
	int add();
}
public class Demo7 implements Demo8 {
   
	public static void main(String[] args) {
   
		Demo7 demo7 = new Demo7();
		demo7.say();
		System.out.println(demo7.add());
	}
	public void say() {
   
		System.out.println("你好啊");
	}
	public int add() {
   
	    int i=1;
	    int j=2;
		return i+j;
	}
}
public interface Demo9 extends Demo8{
   
	void print(String name);
}

一个类实现 一个接口,如果这个接口继承了另一个接口,那么这个类除了实现这个接口的所有方法以外,还要实现被继承的那个接口的所有方法:


public class Demo10 implements Demo9 {
   

	public static void main(String[] args
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值