java中的接口与继承,接口的例子讲解
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中的接口与继承,接口的例子讲解的更多相关文章
- 在java中,List是个接口,那实现List接口的类有哪些,有什么区别?
在java中,List是个接口,那实现List接口的类有哪些,有什么区别? 解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引 ...
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
为什么说JAVA中要慎重使用继承 这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...
- 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性
原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...
- java中接口可以继承接口
今天阅读别人的代码才发现,接口是可以继承接口的 一个类只能extends一个父类,但可以implements多个接口. 一个接口则可以同时extends多个接口,却不能implements任何接口. ...
- Java中多态、抽象类和接口
1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: ...
- java 面对对象(抽象 继承 接口 多态)
什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- Java自学-接口与继承 接口
设计Java的接口 在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击 这时候,就可以使用接口来实现这个效果. 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们 ...
- Java中的实体类--Serializable接口、transient 关键字
在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...
- Java中的封装、继承、多态
封装 在如何理解面向对象这篇文章中,提到所谓的封装就是"功能都给你做好了,你不必去理解它是怎么写出来的,直接使用即可.".但你得清楚一点,那就是这句话是相对于使用者来说的,而作为开 ...
随机推荐
- 如何实现word上传服务器
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- 前端面试之Javascript
1,JS基本的数据类型和引用类型: (1)基本数据类型:number,string,null,undefined,symbol--栈: (2)引用数据类型:object,array,function- ...
- Python开发者年度调研,结果出乎意料!
来源商业新知网,原标题:Python开发者年度调研:一半Python用户也用JS,2/3选择Linux系统 作为高级编程语言,Python的受欢迎程度近几年一直在往 上涨.每年,Python官方都会针 ...
- JS数据类型之Number类型
Number类型的转换及方法 var num = 10; num.toString() //"10"转字符串,参数表示几进制 num.toFixed(2) //10.00 自动舍入 ...
- 后台编辑器组件VmEditor
<template> <div class="wrap"> <div class="vm-editor"> <div ...
- Java框架spring 学习笔记(十九):事务管理(注解管理)
注解管理的方式要比xml配置方式要简单很多 只需在配置文件中添加事务注解 <?xml version="1.0" encoding="UTF-8"?> ...
- [translation]The rise of college ‘Grade Forgiveness’
Education 教育 The rise of college 'Grade Forgiveness' /*the rise of -的增加*/大学等级宽恕现象的增加. Universities a ...
- C++———Vector
#include<algorithm> #include <vector> #include <iostream> #include <stdio.h> ...
- Exp1 PC平台逆向破解 20165110 石钰
Exp1 PC平台逆向破解 20165110 石钰 一.实践目标 1.实验背景 实践对象是pwn1的Linux可执行文件,该程序的正常该程序正常执行流程是:main调用foo函数(oo函数会简单回显任 ...
- 验证当前启动APP的Package 和 Activity
1. 打开手机USB 调试开关 2. 执行: adb devices 3.启动你的测试APP (如手机QQ) 4.执行:adb shell dumpsys window |findstr mCurre ...