Java抽象类和接口异同点

本文详细解析了抽象类和接口的概念、定义形式及其区别与联系。介绍了抽象类中抽象方法的特点,以及接口如何用于定义对象的共同行为。通过对比两者,帮助读者更好地理解并运用这些概念。

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

只是小白的学习笔记,有错轻喷🥬

目录

抽象类

抽象方法的声明格式

抽象类的定义

和普通类的区别

接口

接口的定义形式

​​​​​​​区别

抽象类和接口的区别

抽象类和接口的相同点

总结


  • 抽象类

 💡 抽象类:包括抽象方法的类(抽象方法——只有声明没有具体的实现)

抽象方法的声明格式

abstract void fun();

抽象方法要用abstract进行修饰,抽象类也须要在类前使用abstract进行修饰

抽象类的定义

public abstract class ClassName{

	abstract void fun();

}
  • 和普通类的区别

    1. 不能使用new操作符创建实例,也不能用new初始化
    2. 包含抽象方法的类必须声明为抽象类,抽象方法不能包含在非抽象类中(感觉这两句话是一个意思)
    3. 抽象方法一般为public(如果为private,则不能被子类继承,子类无法实现该方法
  • 接口

💡 接口:与类相似的结构,用于对对象定义共同的操作,在软工工程中,泛指供调用的方法或者函数(每个接口都被编译为独立的字节码文件)

接口的定义形式

public interface InterfaceName{
    
}
  • 和普通类的区别

  1. 由于接口中所有数据域都是public static final而且所有的方法都是public abstract,所以允许忽略省略修饰符(只是在接口方法中可以省略public,子类的方法还是要public的)
    public interface T{
    	public static fianl int K=1;
    	public abstract void p();
    }
    //等价于
    public interface T{
    	int K=1;
    	void p();
    }
    
  2. 不能使用new创建接口实例,让对象所属类实现接口需要使用implements(一个类可以继承多个借口,所以implements后面可以接多个接口名)
class ClassName implements Interface1,Interface2,[...]{
}

​​​​​​​​​​​​​​  

同样,利用extends,接口可以继承其他接口,这样的接口被称为子接口。

public interface NewInterface extends Interface1,...,InterfaceN{
}

此时NewInterface是Interface1,...,InterfaceN的子接口。

  • 抽象类和接口的区别

    1. 抽象类可以提供方法的实现细节,而接口中的方法只能是public abstract
    2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的。
    3. 接口中不能含有静态代码块以及静态方法(用static修饰的方法),而抽象类是可以有静态代码块和静态方法。
    4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
  • 抽象类和接口的相同点

    1. 都不能实例化,即不能使用new操作符创建实例
    2. 都可以被继承,都包含类抽象方法,都可以实现程序的多态性

  • 总结

    接口和抽象类都可以用于对对象指定共同的行为,比较强的is-a(是一种)关系采用类来建模,而弱的is-a(是一类)关系可以使用接口建模。接口比抽象更加灵活,因为一个子类只能继承一个父类,但是却可以实现任意个数的接口

或者可以看看这篇​​​​​​​

​​​​​​​深入理解Java的接口和抽象类 - Matrix海子 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值