Java抽象类和接口异同点的学习

1:抽象类
在这里插入图片描述

抽象类特点
1:抽象类中可以没有抽象方法;
2:类中可以定义抽象方法(abstract修饰的方法);
在这里插入图片描述

3:抽象类不能直接实例化,要通过其普通子类进行实例化,抽象类可以创建构造方法,为子类调用;
4:子类继承抽象类必须实现抽象类中所有的抽象方法,否则子类也必须定义为抽象类;
5: 抽象类修饰符必须为public或者友好的(默认的),不能是private,因为创建抽象类,就是要被其他类继承,用private修饰了,则不能被子类继承,子类便无法实现该方法。

2:接口

出现的必要性:
Java继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
接口的特点
1:接口中只包含常量和抽象方法,而没有变量和方法的实现
2:接口对类来说是一套规范,是一套行为协议;
3:接口不是一个类,不能实例化
4: 一个接口可以实现多个接口,一个接口可以继承接口;
5: 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6:如果一个类要实现接口,它需要在类头中使用implements关键字
接口定义的格式:

public interface 接口名称
{
(方法头...)
}
//接口中的所有方法都是public,抽象方法。
//一个类可以实现一个或者多个接口。

3:比较
在这里插入图片描述
异同点:
一个类实现接口的话要实现接口的所以方法,而抽象类不一定;
类可以实现很多个接口,但是只能继承一个抽象类;
接口中声明的变量默认都是final的。抽象类可以包含非final的变量;
接口和抽象类都不可以被实例化;
接口不能创建构造方法,抽象类可以创建构造方法;
接口中的静态方法,只能接口进行调用,而抽象类不是;
实现接口的类必须实现其中的所有方法,继承自抽象类的子类实现所有的抽象方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值