extends 继承类;implements 实现接口。

简单说:

1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,

2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,

3.继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ,

比如  class A extends B implementsC,D,E

extends和implements有什么不同?

对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。

interface的引入是为了部分地提供多继承的功能。在interface中只需声明方法头,而将方法体留给实现的class来做。这些实现的class的实例完全可以当作interface的实例来对待。在interface之间也可以声明为extends(多继承)的关系。

注意:一个interface可以extends多个其他interface。

接口实例:

例子1:

一共包括4个类,分别是CAR.java,BigCar.java,TestCar.java,CarInterface.java。

CAR.java:

声明一个接口,不实现方法,只声明方法,接口不能实例化。

package com.su.callback;

publicinterface CAR {

void start();

void stop();

}

  

BigCar.java:

用BigCar类实现接口CAR,实现它的方法,也就是写程序结构体。BigCar是能够实例化的,BigCar的对象是Car型的。当你需要调用接口
CAR的方法的时候,需要用CAR的对象来调用CAR的方法,但是CAR又不能实例化,我们就可以用实现了CAR的BigCar的对象来调用CAR的方法。

package com.su.callback;

publicclass BigCar implements CAR {

@Override

publicvoid start() {

// TODO Auto-generated method stub

System.out.println("bigcar start...");

}

@Override

publicvoid stop() {

// TODO Auto-generated method stub

System.out.println("bigcar stop!");

}

} 

TestCar.java:

用opeCar方法调用Car的方法。

package com.su.callback;

publicclass TestCar {

publicvoid operCar(CAR c)

{

c.start();

c.stop();

}

}

  

TestInterface.java:

调用operCar方法,需要传实参进去,实参需要是一个对象,对象是BigCar(实现了接口的类)的实例化对象。

package com.su.callback;

publicclass TestInterface {

publicstaticvoid main(String[] args)

{

TestCar tc=new TestCar();

BigCar bc =new BigCar();

tc.operCar(bc);

}

}

  

输出结果:

bigcar start...
bigcar  stop!

总结:当我们调用接口A的方法:Amethod()的时候,通过调用以接口为参数的函数:b(A a) 来调用接口的函数Amethod(),要想调用b,需要传实参进去。

例子2:

//接口类:JK.java

package com.su.callback;

publicinterface JK {

// 接口中可以有几个方法的声明

publicvoid MethodA();

publicvoid MethodB();

}

  

//接口的实现类 ImplementJK.java

package com.su.callback;

publicclass ImplementJK implements JK {

@Override

publicvoid MethodA() {

// TODO Auto-generated method stub

System.out.println("接口JK的MethodA实现。。");

}

@Override

publicvoid MethodB() {

// TODO Auto-generated method stub

System.out.println("接口JK的MethodB实现。。");

}

}

  

//调用接口的方法的类DJK.java

package com.su.callback;

publicclass DJK {

publicstaticvoid main(String args[]){

ImplementJK implementJk=new ImplementJK();

implementJk.MethodA();

implementJk.MethodB();

}

}

  

只调用MehtodA的时候,就只执行MethodA ,

总结:接口的对象可以调用接口的方法,接口的实现类的对象也可以调用接口的方法。

例子1:定义一个类TestCar,用这个类的方法(以接口为参数)调用接口的两个方法,再用另外一个类TestInterface调用TestCar的一个方法达到调用接口的两个方法的作用。

例子2:直接用接口的实现类的实例,调用接口的方法。

java中的接口与继承,接口的例子讲解的更多相关文章

  1. 在java中,List是个接口,那实现List接口的类有哪些,有什么区别?

    在java中,List是个接口,那实现List接口的类有哪些,有什么区别? 解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引 ...

  2. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  3. 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性

    原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...

  4. java中接口可以继承接口

    今天阅读别人的代码才发现,接口是可以继承接口的 一个类只能extends一个父类,但可以implements多个接口. 一个接口则可以同时extends多个接口,却不能implements任何接口. ...

  5. Java中多态、抽象类和接口

    1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: ...

  6. java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...

  7. Java开发知识之Java中的集合上List接口以及子类讲解.

    Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...

  8. Java自学-接口与继承 接口

    设计Java的接口 在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击 这时候,就可以使用接口来实现这个效果. 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们 ...

  9. Java中的实体类--Serializable接口、transient 关键字

    在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...

  10. Java中的封装、继承、多态

    封装 在如何理解面向对象这篇文章中,提到所谓的封装就是"功能都给你做好了,你不必去理解它是怎么写出来的,直接使用即可.".但你得清楚一点,那就是这句话是相对于使用者来说的,而作为开 ...

随机推荐

  1. PTA变成总结1

    1)实验代码 #include<stdio.h>int main(){ int N,k,n,i,j,p,m,ge; char op; while(1){  scanf("%d % ...

  2. JS实现将数字金额转换为大写人民币汉字

    function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', ...

  3. pl/sql developer 问题总结

    问题1,出现NLS_LANG和字符集(Character set)问题 安装完PL/SQL后打开,遇到如图问题. 原因:这是因为系统没有设置NLS_LANG系统变量. 解决方法:有两种方式查看. 1. ...

  4. MySQL8.0.15安装教程(Windows)

    下载 第一步 去官网下载社区版本(GPL版本) 第二步 不登录,直接选下方的跳过 下载解压后 配置系统环境变量 复制解压后的mysql到C盘或者其他磁盘下 我们去系统的环境变量的path里添加一个my ...

  5. vue 存取、设置、清除cookie

    步骤: 第一步:assets目录下添加cookie.js文件 export function setCookie(c_name,value,expire) { var date=new Date() ...

  6. nginx学习笔记(三)

    nginx变量 有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话) 我们看一个通过修改 $args ...

  7. 自定义圆形ImageView(解决Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();报错问题)

    package com.bottle.bottlelilibrary.view; import android.content.Context; import android.graphics.Bit ...

  8. select 的选中问题

    function bind(pageIndex) { if (getQueryString("_status") == "3") {//从首页中慢病管理人数进入 ...

  9. selenium+java定位163/126邮箱元素显示定位失败解决

    开始在没有进入iframe时,用任何方法定位163/126邮箱登录页面的元素都不可能定位到,eclipse工作台会显示Unable to locate element:…… 这种情况我遇到了两种原因: ...

  10. Java 中12个原子操作类

    从JDK1.5 开始提供了 java.util.concurrent.atomic 包,该包提供了一种用法简单.性能高效.线程安全的更新一个变量的方法 原子更新基本类型类 AtomicBoolean: ...