Java implements和extends的区别

implements

关键字implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法。实现一个接口,必须实现接口中的所有方法。使用 implements 关键字可以变相地使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)

注意点:

  • 接口可以被多重实现(implements),抽象类只能被单一继承(extends)
  • 接口只有定义,抽象类可以有定义和实现
  • 接口的字段定义默认为:public static final,抽象类字段默认是friendly

接口的作用:

接口是软件编程的规范,可以降低耦合性,换句话说,可以让某个模块或功能能够重复利用,这样只要写一次功能代码就行。其他地方要用到的,全部用接口调用来实现。

接口的优势:

  • “接口+实现”最常见的优势就是实现类和接口分离,在更换实现类的时候,不用更换接口功能。
  • 这对于做单元测试也非常有帮助。

DEMO
定义两个接口Bread、Milk并(implements)单一实现

//定义Bread接口
public interface Bread{//定义一个方法吃面包(接口中没有具体的实现方法体)public void eatBread();
}//Bread接口的实现类
public class BreadImpl implements Bread{//实现eatBread方法(接口的实现类中需要有具体的方法体)public void eatBread(){System.out.println("吃面包");}
}
public interface Milk{//定义一个方法喝牛奶public void drinkMilk();
}//Bread接口的实现类
public class MilkImpl implements Milk{//实现eatBread方法(接口的实现类中需要有具体的方法体)public void drinkMilk(){System.out.println("喝牛奶");}
}

多重实现 依照上面定义的接口进行多重实现

public class Man implements Bread,Milk{//实现了Bread接口中eatBread方法public void eatBread(){System.out.println("吃面包");}
//实现了Milk接口中drinkMilk方法public void drinkMilk(){System.out.println("喝牛奶");}
}

extends

关键字extends,表示对父类的继承,可以实现父类,也可以调用父类初始化。而且会覆盖父类定义的变量或者函数。在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。

区别

  • extends是继承类,implements是实现接口。

  • 类只能继承一个,接口可以实现多个。

  • extends继承父类的时候可以重写父类的方法,也可以调用父类的非私有方法;implements实现接口,必须实现接口的所有方法。

  • extends后面跟的是类,表示继承关系;
    如public class Dog extends Animal

  • 继承这个可以理解为继承父类的方法,父类中的方法可以在子类中用到;

  • 实现接口就是在接口中定义了方法,这个方法要你自己去实现,接口可以看作一个标准,比如定义了一个动物的接口,它里面有 eat() 这个方法,则可以实现这个方法implements,这个方法是自己写,可以是吃苹果,吃梨子,香蕉,或者其他的。implements就是具体实现这个接口。

DEMO
类的继承格式

class 父类 {}class 子类 extends 父类 {}

开发动物类,其中动物分别为企鹅以及老鼠,要求如下:

企鹅:属性(姓名,id),方法(吃,睡,自我介绍)
老鼠:属性(姓名,id),方法(吃,睡,自我介绍)

企鹅类

public class Penguin { private String name; private int id; public Penguin(String myName, int  myid) { name = myName; id = myid; } public void eat(){ System.out.println(name+"正在吃"); }public void sleep(){System.out.println(name+"正在睡");}public void introduction() { System.out.println("大家好!我是" + id + "号" + name + "."); }
}

老鼠类

public class Mouse { private String name; private int id; public Mouse(String myName, int  myid) { name = myName; id = myid; } public void eat(){ System.out.println(name+"正在吃"); }public void sleep(){System.out.println(name+"正在睡");}public void introduction() { System.out.println("大家好!我是"         + id + "号" + name + "."); }
}

公共父类

public class Animal { private String name;  private int id; public Animal(String myName, int myid) { name = myName; id = myid;} public void eat(){ System.out.println(name+"正在吃"); }public void sleep(){System.out.println(name+"正在睡");}public void introduction() { System.out.println("大家好!我是"         + id + "号" + name + "."); }
}

企鹅类

public class Penguin extends Animal { public Penguin(String myName, int myid) { super(myName, myid); }
}

老鼠类

public class Mouse extends Animal { public Mouse(String myName, int myid) { super(myName, myid); }
}

关键字super
在继承关系中,父类的成员变量、局部变量、方法被隐藏被子类常常覆盖,这时需要引用父类成员变量、局部变量、方法。

super.变量名,super.方法名,super.父类的构造方法;

关键字this
如果类的成员变量与局部变量重名,类的成员变量将被隐藏,如果要使用类的成员变量,需要使用this引用之。
this.变量名,this.方法名,this.父类的构造方法;

继承的特性
1.子类拥有父类非private的属性,方法。

2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

3.子类可以用自己的方式实现父类的方法。
Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。

4.提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。

参考文章:
java继承(implements与extends)总结
java中extends和implements的区别

Java implements和extends的区别相关推荐

  1. java中implements是什么意思_Java中implements和extends的区别

    看到java中很多类有使用implements和extends,那么这两种用法有哪些区别呢,今天我们来分析一下. 简单说:1.extends是继承父类,只要那个类不是声明为final或者那个类定义为a ...

  2. implements和extends的区别

    在准备软考的时候遇到了这个问题,自己基础不是很扎实,所以记下来. 简单说:  1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承, 2.JAVA中不 ...

  3. Java implement意思_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...

  4. java中implement_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,Java中不支持多重继承,但是可以用接口来实 ...

  5. 类的implements与extends区别

    implements与extends的主要概念: implements 是实现(多实现) extends 是继承(单继承) 类只可以单继承 但是如果是接口的话(interface关键字修饰的类)就可以 ...

  6. java 接口与抽象类的区别

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  7. Java和JavaScript之间的区别

    1.简介 我们将在本文中比较Java语言和JavaScript语言. JavaScript由Netscape开发. 它最初是用于客户端的脚本语言,后来又用作客户端和服务器脚本的语言. Java由Jam ...

  8. java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别

    前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...

  9. java接口和抽象类的区别(经典面试题)

    java接口和抽象类的区别(经典面试题) 要了解接口和抽象类的区别,首先需要明白接口和抽象类的定义. 1.抽象类 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可 ...

最新文章

  1. 增强的Internet域内网关路由协议
  2. 软考-信息系统项目管理师-项目整体管理
  3. 浅述 Docker 的容器编排
  4. d3.js 绘制极坐标图(polar plot)
  5. apache2 + django
  6. M-LSD 面向轻量化实时线段检测
  7. 华南理工大学计算机学院创新班,高校纷推创新班揽生源 逐步淘汰冷门专业
  8. 个人所得税计算java版
  9. 台式计算机通过电流,一台台式电脑正常工作的时候电流是多少安?谢谢
  10. 2018-2019-2 20189206 《密码与安全新技术专题》 第六次作业
  11. kallsyms_lookup_name使用简介
  12. c语言双重性,C语言双重循环应用初探
  13. 有趣的计算机课的作文,有趣的电脑课作文300字
  14. Oracle数据库中索引的维护
  15. HGVS制订的变异位点命名规则
  16. Word:表格在页面中垂直居中
  17. windows7开机壁纸_如何在Windows 7上修复黑色墙纸错误
  18. 在.NET中实现彩色光标/动画光标和自定义光标[转]
  19. 想通过参加会议年入30万,没这些能力可不行——百格活动
  20. shell基础--条件判断if和case

热门文章

  1. 应用程序如何从X86快速换到ARM架构 | 瑞迅科技工控一体机解读
  2. 对于国内数据交换平台的分析
  3. Date类的getDay()和getDate()方法
  4. 【PTA】谷歌的招聘(C语言)
  5. 【linux】posix是什么都不知道,还好意思说你懂Linux?
  6. 尚硅谷Vue技术全家桶(1)
  7. 高版本CAD如何降低版本?来看这种降低版本方法
  8. 关键词生成原创文章及句子的软件!开发原理分析
  9. PHP获取文件夹下所有图片信息
  10. 【关于ChatGPT的30个问题】1、ChatGPT是什么?/ By 禅与计算机程序设计艺术