extends与implements的不同

1、在类的声明中,通过关键字extends来创建一个类的子类。

一个类通过关键字implements声明自己使用一个或者多个接口。

extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法;

implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用

2、extends是继承父类,只要那个类不是声明为final

JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,

但implements可以实现多个接口,用逗号分开就行了 比如 :

class A extends B implements C,D,E

接口实现的注意点:

a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。

b.接口中的方法都是抽象的。

c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

与Extends的不同

extends, 可以实现父类,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。    implements,实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。

这两种实现的具体使用,是要看项目的实际情况,需要实现,不可以修改implements,只定义接口需要具体实现,或者可以被修改扩展性好,用extends。

  • 介绍
  • Abstract,即抽象。笼统的描述一类东西。

打个比方:

我们说车子都可以跑(run)。但有几个轮子,怎么跑,对于不同的车有不同的结果。自行车2个轮子需要人踩着跑,三轮车有3个轮子可以人踩、也能电动,汽车发动机推动跑等等,那么“车”的表达为抽象的。

特点:

abstract可以修饰类,也可以修饰方法;
abstract修饰的类可以被继承和实现,但是这个类本身不能被实例化;
抽象方法必须在抽象类中,抽象类中可以有非抽象的方法;
抽象类中可以没有抽象方法,这样做的作用是这个类不可以被实例化;
抽象类的子类在继承抽象类后,必须把父类中的抽象方法重写,否则子类也会自动变为抽象类;
抽象方法用于被子类继承后重写。即是父类的抽象方法是空的,必须由子类继承之后在子类中由子类实现,这可以达到不同子类可以根据自己的特性来定义自己从父类继承过来的抽象方法;
abstract不能与final关键字共存,因为final关键字修饰的类是不能被继承的;
abstract不能与private关键字共存,因为私有的东西不能继承;
abstract不能与static关键字共存,当static修饰方法时,该方法可以通过类名直接调用,而abstract修饰的抽象方法是不能被调用的;
abstract修饰的类中的普通方法可以通过该抽象类的子类直接调用。
抽象类与interface关键字:

当一个抽象类中的所有成员只有抽象方法时,便是一个接口,可以用关键字interface表示;
接口中的成员有两种:1.全局常量 2.抽象方法 ;
接口中的权限必须是public,若没写public,会自动加上public;
接口中有抽象方法,因此接口也是抽象类,不可以实例化。所以其子类也必须覆盖了接口中所有的抽象方法后,才能实例化,否则他也是一个抽象类。

二、优缺点

抽象类有什么好处呢?
1、由于抽象类不能被实例化,最大的好处就是通过方法的覆盖来实现多态的属性。也就是运行期绑定
2、抽象类将事物的共性的东西提取出来,由子类继承去实现,代码易扩展、易维护。

三、不能和下列关键字共存

abstract是抽象类的关键字,也是抽象方法声明上必须加的修饰符,在定义方法上它一般不能与以下几个关键字共存:

1、和static:
abstract class A {
public abtract static void method();
}
static修饰后可以直接类名调用方法,但是抽象方法没有实现体,调用无意义;

2、和final:
final修饰的类不能被继承,修饰的方法不能被重写,修饰的成员变量只能为常量;但是继承的子类要重写这个抽象方法,所以会出现矛盾;

3、和private:
抽象方法是为了让子类重写并给定实现体,但是private修饰的方法只能本类访问,所以矛盾

此外关于接口的详细介绍

https://liuyangjun.blog.csdn.net/article/details/80259836

关于关键字extends与implements的不同以及关于接口的详细介绍的文章的更多相关文章

  1. PHP的类,abstract类,interface及关键字extends和implements

    原文:https://blog.csdn.net/qq_19557947/article/details/77880757?locationNum=4&fps=1 PHP类 PHP类是单继承, ...

  2. java关键字extends(继承)、Supe(父类引用空间)、 This(方法调用者对象)、Instanceof(实例类型-判断对象是否属于某个类)、final(最终)、abstract(抽象) 、interface(接口)0

    java 继承使用关键字extends   继承的作用:减少代码量,优化代码 继承的使用注意点: 1子类不能继承父类的私有变量 2.子类不能继承父类的构造方法 3.子类在调用自己的构造方法时 会默认调 ...

  3. PHP中的 extends与implements 区别 [转]

    extends 是继承某个类 继承之后可以使用父类的方法 也可以重写父类的方法 implements 是实现多个接口 接口的方法一般为空的 必须重写才能使用 extends是继承父类,只要那个类不是声 ...

  4. JAVA中extends 与implements区别

    JAVA中extends 与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extend ...

  5. extends 与 implements 的区别

    extends与implements是Java继承中使用的两个关键字,但extends与implements使用的情景不同: 1.接口继承接口,使用extends 2.类继承类时,用extends 3 ...

  6. JAVA中extends 与implements有啥区别?

    JAVA中extends 与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extend ...

  7. JAVA中extends 与implements的用法

    1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重 ...

  8. extends 与implements的区别和用法

    1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口. extends 是继承某个类, 继承之后可以使用父类的方法, 也可以 ...

  9. JAVA 构造器, extends[继承], implements[实现], Interface[接口], reflect[反射], clone[克隆], final, static, abstrac

    记录一下: 构造器[构造函数]: 在java中如果用户编写类的时候没有提供构造函数,那么编译器会自动提供一个默认构造函数.它会把所有的实例字段设置为默认值:所有的数字变量初始化为0;所有的布尔变量设置 ...

  10. extends和implements区别

    extends与implements的不同 1.在类的声明中,通过关键字extends来创建一个类的子类. 一个类通过关键字implements声明自己使用一个或者多个接口. extends 是继承某 ...

随机推荐

  1. SQL IIF函数的使用 判断为空数据不显示的问题

    先说说IIF函数 IIF函数 需要一个条件 两个值 当条件满足的时候 执行第一个值 条件不满足的时候 执行第二个值 IIF(判断条件,值1,值2) 今天判断数据的时候 发现当值为NULL或者为'    ...

  2. Jmeter一、开源软件的崛起

    一.jmeter自身特点: 1.开源,轻量级,更适合自动化和持续集成. 2.学习难度大. 3.资料少.多英文. 二.性能测试工具选型的原则 1.成本: a.工具成本 b.学习成本 2.通信协议: a. ...

  3. UE5农场项目小功能(1)-砍树

    砍树功能效果的实现 ​ 在UE中想做一个砍树的功能,B站上没找到什么教程,最后在油管上找到个视频并跟着实现了,一共设计到三个蓝图和一个什么也没写的蓝图接口,下面介绍下步骤. 1.角色蓝图的部分 人物这 ...

  4. Markdown基础使用学习

    Mark Down学习 标题:#+标题名字 二级标题:## +标题名字 三级... 字体 两个*+字+两个=加粗 一个=斜体 引用 一个大于号+内容 图片 ![图片名字](路径) 符号全部小写 超链接 ...

  5. C语言中分治的思想-位运算

    (1) 有101个整数,其中有50个数出现了两次,1个数出现了一次, 找出出现了一次的那个数. 位运算的思想:任何数和零异或得到自己,任何数自己异或得到0. eg1.{2,1,5,1,2,2} num ...

  6. 【Unity】使用dmp文件定位Player崩溃原因

    写在前面 如果在Player运行时突然崩溃,仅靠Player.log日志文件不能定位引起崩溃的代码,那么可以尝试利用dmp(仅限Windows平台)文件定位崩溃原因. 正文 环境 Unity 2020 ...

  7. UG二次开发-CAM-执行方式

    以C#开发为例,通常先用[操作记录]功能录制关键代码,得到一个.cs文件. (1)可以直接使用[播放操作记录]的方式执行该.cs文件. (2)可以建立一个C#的类库工程,将上述.cs文件加载进去,添加 ...

  8. 7.webpack与vue-cli

    一.模块化相关规范 1.1 模块化概述 传统开发模式的主要问题 命名冲突:多个JS文件之间,如果存在重名的变量,会发生变量覆盖问题 文件依赖:JS文件无法实现相互的引用 通过模块化解决上述问题 模块化 ...

  9. Shell脚本实现模拟并发及并发数控制

    #!/bin/bash #by inmoonlight@163.com #下面的代码控制并发数.其实是利用令牌原理实现 #一个线程要运行,首先要拿到令牌在该代码中即read一行数据,读取不到就会暂停, ...

  10. K8S二进制单节点部署

    一.常见的k8s部署方式 1.inikube: Minikube是一个工具,可以在本地快速运行一个单节点微型K8s,仅用于学习预览K8s的一些特性使用 部署地址: https://kubernetes ...