[Java基础] 0x02 一篇文章厘清接口、抽象类、实体类

本文详细探讨了Java中的接口、抽象类和实体类的区别和联系,包括它们的基础概念、继承实现规则及示例。文章强调了接口的多继承特性,抽象类与实体类的实例化差异,以及实体类在继承和实现方面的限制。
摘要由CSDN通过智能技术生成

导语

昨天做了一套笔试题,发现自己对Java语法的掌握还是不够扎实,于是写下这篇文章,来厘清接口、抽象类、实体类之间的关联与差异。包括是否可以继承、多继承,是否可以实现、多实现等等。

基础概念

接口

接口Interface是一个抽象类型(不用显式声明abstract),是抽象方法的集合
它不是类,也没有构造方法,更不能进行实例化。
但是它描述类要实现的方法(全都是抽象方法 )。

接口内包含抽象方法,都是public的,不用显式声明abstract。
但是不能包含成员变量,除非是static和final变量。

访问权限 interface 接口名 [extends 其他接口(s)]{
	//static、final字段
	//抽象方法
}

不同于类,接口是支持多继承的。即一个接口可以继承多个接口。

类可以实现接口(而不是继承),但是类要实现接口中所有的方法,除非是抽象类。
类在实现接口的方法时,不能抛出强制性异常,只能在接口、或者继承接口的抽象类中抛出强制性异常。

抽象类

抽象类abstract class不是用来描绘对象的,它表示的是一种继承关系。抽象类可以有构造函数,但不能用于实例化对象,只有被继承,才能使用。

抽象类可以没有抽象方法,但是有抽象方法的类一定是抽象类。
抽象方法要用abstract关键字显式声明。

访问权限 abstract class 类名 [implements 接口1[, 接口2, ...]	]{
	//成员变量
	//抽象方法和非抽象方法
	public abstract 返回类型 方法名();
	public 返回类型 方法名(){
		//方法体
	};
}

抽象类除了不能实例化对象,存在类的其他功能。
比如,抽象类可以继承抽象类,也可以继承实体类。

实体类

不被abstract关键字修饰的类是实体类,可以实例化对象。

实体类可以实现多个接口,但必须实现所有方法。
实体类可以继承一个抽象类,但必须实现抽象方法。
实体类可以继承实体类,但不支持多继承,只能多重继承。

对比分析

接口和抽象类

抽象类可以实现多个接口,不必实现接口内所有抽象方法。
接口不可以继承抽象类,接口只能继承接口,支持多继承。

接口和实体类

实体类可以实现多个接口,但必须实现接口内所有抽象方法。

实体类和抽象类

实体类可以继承抽象类,但必须实现抽象类中所有抽象方法。
抽象类也可以继承实体类。

示例

假如有以下接口:

public interface A (extends B(, C, D)){
	public final int m=5;
	public static String s="hello";
	
	public void method1();
	public int method2();
	public String method3();
}

则抽象类实现接口:

public abstract class E implements A(, P, Q){
	public abstract void method1();
	public int method2(){
		return 5;
	};
}

而实体类继承抽象类:

public class F extends E{
	public void method1(){
		system.out.println("Hello!");
	}
	public String method3(){
		return "hello";
	}
}

Q&A

Q:抽象类可以实现接口吗?
A:可以。抽象类不必实现接口中的所有方法。

Q:抽象类可以继承实体类吗?
A:可以。抽象类可以继承实体类的所有非抽象方法,然后可以拥有自己的抽象方法。

Q:抽象类可以实例化对象吗?
A:不可以,必须被继承才能被使用

Q:Java中存在多继承吗?
A: 类之间不存在多继承,但是接口之间存在多继承。但是类支持多重继承。

Q:抽象类的方法全都是抽象方法吗?
A:抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。也就是说,只要一个类包含抽象方法,那它就是抽象类。

结束语

写这篇博客的过程中,颠覆了我以前很多错误认识。比如抽象类是可以继承实体类的,再比如抽象类也可以实现接口等等。这是由于对于概念的理解不深所导致的。而写这篇文章的过程,也是我厘清这些概念的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值