php接口与抽象类对比,接口与抽象类对比

本文对比了Java中抽象类与接口的区别,包括语法定义、特点和应用场景:接口更严谨,仅允许常量和特定方法;抽象类可定义更多属性和方法,支持单继承和多实现接口。通过实例演示了如何在继承结构中处理抽象方法和接口实现。
摘要由CSDN通过智能技术生成

在分析2个方法之前先了解它们的语法定义和基础知识

抽象类和接口不能相互继承。他们都不能实现方法

————————

接口:关键字: 声明接口interfate  实现接口implements。

接口中继承只有接口继承接口。

实现和接口之间只有字面意思,再无其他关系。接口与类 ——接口是独立于"类"类型之外的,全新的数据类型,本质上完全不同

接口中声明属性,只允许public / static / default 公共静态常量就算不写public  static  final三个关键字,也会自动认为是公共静态常量

接口中声明方法,只允许3种:public / static / default,不允许使用final修饰一个方法

接口允许多实现,一个类一个拥有多个接口 。

一个类可以实现多个接口(关键字implements),其中abstract修饰的方法实现类必须实现。

接口中的方法也有返回类型,

接口不允许有构造器

如果接口有父类,父类也必须是接口。

接口不是类所以不需要class修饰。

public interface Animal { //接口不是一个类所有不需要class修饰

public static final boolean sex = true; //公开静态常量的属性

voidanimal_1(){//**报错 Abstract methods do not specify a body//抽象方法未指定类型

}static voidme() {//静态static的方法

}public default voidsleep() {//默认访问修饰符的方法//public default 也可以这样写,default只是说明默认访问修饰符的一个英文

}abstract int animal(); //正确声明的抽象方法//接口也有返回类型

}

————————

抽象类:关键字abstract class

一个抽象的类? 那么它和普通类有什么区别?  抽象类本身和普通类唯一的区别是不能被实例化抽象类的意义就是让其他类继承(JAVA中继承只能单继承,可以多重继承),其中abstract修饰的方法子类必须实现。

抽象类中抽象方法的定义,决定了子类的本质。

抽象类可以有构造器,子类运行时直接调用执行。

如果一个类有一个方法被声明是抽象的,那么这个类必须是抽象类。

抽象类中可以没有抽象方法(只有普通方法)。

子类继承抽象方法,子类的重写权限必须是public。

抽象类可以继承接口,并且不实现接口中的abstract方法。

————————

两者之间的

相同点:

都是通过关系,让其他类实现其中的abstract方法。

都有抽象方法,都不能被实例化, 他们的设计都是让下层去实现

都支持动态绑定

不同:

接口中限制更严谨,属性只允许定义常量和静态,方法只允许出现静态,默认和抽象方法。而抽象类本身除了不能实例化以外它和普通的类没有区别,可以定义各种属性方法。

接口不能有构造器,抽象类可以有

抽象类使用要继承(extends),接口使用要实现(implements) 。 这里的区别就很大了继承只能单继承,实现确可以多实现

前者只要他们都是同一个父类就可以进行统一操作,后者只要实现了同一个接口就可以进行统一操作。

————————

总结:

如果设计的场景时无论怎么变他都会存在,那么就设计到抽象方法中。继承的特性 不管继承延续了多少次,他们都还是属于同一个父类的延续

如果设计的场景是为了丰富需求,那么就设计成接口。

举例:

lol英雄技能 所有英雄都有4个技能——设计成抽象方法

装备系统  所有英雄都有可以装备装备,但不代表他们都有——设计成接口

————————

场景联想:

抽象类B实现了接口A,C继承了抽象类B,那么C要同时实现A和B的抽象方法

C也能够调用到A接口,B抽象类里的所有方法和属性(private除外)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值