接口

1、多个无关的类可以实现同一个接口

2、一个类可以实现多个无关的接口

3、与继承关系类似,接口与实现类之间存在多态性

4、定义java类的语法格式

< modifier> class < name>[extends< superclass>][implements< interface>[, interface]*]{

  <declarations>*

}

  

附:

1、接口(interface)是抽象方法和常亮值的定义的结合。

2、从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常亮和方法的定义,而没有变量和方法的实现。

3、接口定义举例:

public interface Runner{
public static final int id = 1;
public void strrt();
public void run();
public void stop();
}

接口特性:

1、接口可以实现多重继承

2、接口声明的属性默认为public static final 的;也只能是public static final 的;

3、接口中只能定义抽象方法,而且这些方法默认为public 的、也只能是public的;

4、接口可以继承其他接口,并添加新的属性和抽象方法;

接口的使用以及接口实现多态:

public class TestInterface{
public static void main(String args[]){
Singer student = new Student("studentName");
student.sing();
student.sleep(); Teacher teacher = new Teacher("TeacherName");
teacher.painter();
teacher.eat(); Painter painter = (Painter)teacher;
painter.painter();
painter.eat();
//下面是实现多态的部分
TestInterface t1 = new TestInterface();
t1.f(student);
t1.f(teacher);
}
public void f(Singer s){
s.sing();
}
}
interface Singer{
public void sing();
public void sleep();
}
interface Painter{
public void painter();
public void eat();
}
class Student implements Singer{
private String name;
public Student(String name){
this.name = name;
}
public String getName(){
return name;
}
public void Study(){
System.out.println("studying...");
}
public void sing(){
System.out.println("study is singing");
}
public void sleep(){
System.out.println("study is sleeping");
}
}
class Teacher implements Singer,Painter{
private String name;
public Teacher(String name){
this.name = name;
}
public String getName(){
return name;
}
public void sing(){
System.out.println("teacher is singing");
}
public void sleep(){
System.out.println("teacher is sleeping");
}
public void painter(){
System.out.println("teacher is paintering");
}
public void eat(){
System.out.println("teacher is eating");
}
}

运行结果:

内存分析图:

示例:下面实现了一个三种不同的人给动物喂食和玩的多态,用接口实现。

public class TestDynamic{
public static void main(String args[]){ HelpAnimal farmer = new Farmer("farmer");
HelpAnimal worker = new Worker("worker");
HelpAnimal goverment = new Goverment("goverment"); TestDynamic test = new TestDynamic();
test.f(farmer);
test.f(worker);
test.f(goverment); }
public void f(HelpAnimal animal){
animal.play();
animal.eat();
}
} interface HelpAnimal{
public void eat();
public void play();
} class Farmer implements HelpAnimal{
private String name;
public Farmer(String name){
this.name = name;
}
public void eat(){
System.out.println("Farmer eat");
}
public void play(){
System.out.println("Farmer play");
}
} class Worker implements HelpAnimal{
private String name;
public Worker(String name){
this.name = name;
}
public void eat(){
System.out.println("Worker eat");
}
public void play(){
System.out.println("Worker play");
}
} class Goverment implements HelpAnimal{
private String name;
public Goverment(String name){
this.name = name;
}
public void eat(){
System.out.println("Goverment eat");
}
public void play(){
System.out.println("Goverment play");
}
}

java之接口interface的更多相关文章

  1. java中接口interface和private私有内部类怎样一块配合着用?

    3.接口interface和private内部类协同工作[新手可忽略不影响继续学习]马克-to-win:由于是private内部类,外面无法访问甚至无法看到你编的源代码(如果在不同的包中),非常安全. ...

  2. Java学习——接口Interface

    接口: 初期理解可以认为是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.class用于定义类interface 用于定义接口 接口定义时,格式特点:1,接口中常量见定 ...

  3. Python - python里有类似Java的接口(interface)吗?

    参考 https://stackoverflow.com/questions/2124190/how-do-i-implement-interfaces-in-python https://stack ...

  4. JAVA基础--接口 interface

    接口是抽象方法和常量值定义的集合, 接口是一种特殊的抽象类, 只包含常量和方法的定义, 而没有变量和方法的实现. 接口->接口: extends, 类->类: extends, 类-> ...

  5. Java下接口interface前面要不要加I

    说明:加I和不加I都可以,看需要,没有强制要求. 在Java中更多是提倡不加I的,可以看下JDK的源码,都是不加I的. 微软C#是规定要加I,这也是影响从而导致有这个话题的原因. Java中特定不直接 ...

  6. java中接口interface可以持有多个类的共享常量

    3.接口持有多个类的共享常量  接口另一主要功能,马克-to-win: 可以使用接口来引入多个类的共享常量.所有的这些变量名都将作为常量看待.所有定义在接口中的常量都默认为public.static和 ...

  7. java中接口interface有什么用呢?举例!

    接口只有方法的定义,没有方法的任何实现.那这有什么意义呢?马克-to-win: 接口就像一个服务合同.接口只关心必须得干什么而不关心如何去实现它.有 意义吗?有意义.马克-to-win:比如我们的软件 ...

  8. Java的接口(interface)属性和方法的类型

    接口的属性必须是public static final Type 接口的方法必须是public abstract Type 不管你是全写,或只写部分,系统都会自动按上面的要求不全 也就是说 接口中 所 ...

  9. java中的接口interface

    关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...

随机推荐

  1. 使用media Queries实现一个响应式的菜单

    Media queries是CSS3引入的一个特性,使用它可以方便的实现各种响应式效果.在这个示例中我们将会使用media queries实现一个响应式的菜单.这个菜单会根据当前浏览器屏幕的大小变化而 ...

  2. SharePoint Client Object Model API 介绍以及工作原理解析

    CSOM和ServerAPI 的对比 SharePoint从2010开始引入了Client Object Model的API(后文中用CSOM来代替),从名字来看,我们可以简单的看出,该API是面向客 ...

  3. 通过Greasemonkey实现网页图片自动点击

    昨天受一个朋友所托,实现了一个在特定网页自动点击某超链接图片实现网页跳转功能的JavaScript脚本. 工具就是Firefox的Greasemonkey扩展插件.代码如下: // ==UserScr ...

  4. H5常用代码:适配方案1

    在工作中接到H5项目,第一件想到的事就应该是屏幕适配问题,解决了屏幕适配,接下来的事才能真正开始.从此篇博客开始会连续记录下我经常用到的一些适配方案. 对于传统的PC项目,直接在移动端打开也都是会以视 ...

  5. atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php

    atitit.  集合groupby 的实现(2)---自定义linq查询--java .net php 实现方式有如下 1. Linq的实现原理流程(ati总结) 1 2. groupby  与 事 ...

  6. Javascript中DOM技术的的简单学习

    第十四课DOM技术概述1:DOM概述 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节 ...

  7. windows必备,命令行工具cmder

    下载cmder并安装! 64位可下,亲测: http://www.wmzhe.com/soft-31133.html 创建文件夹并进入文件夹命令: mkdir web-server && ...

  8. 配置JDK时环境变量path和JAVA_HOME的作用

    1.PATH环境变量.作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.需要把jdk安装目录下的bin目录增 ...

  9. JavaScript 语句 for

    循环for语句: for(var i =1;i<=5;i++)(初始条件:循环条件:状态改变) { 循环体 } 循环的作用:反复执行某段代码 四要素:初始条件.循环条件.循环体.状态改变 例题1 ...

  10. Avizo应用 - Home和Set Home

    Avizo的数据展示区域中两个选项Home和Set Home,如下图: 接下来会通过一套岩心的数据处理,解释一下这两个选项的一个用处. 首先这个数据已经完成了过滤处理,体渲染效果如下: 然后进行数据分 ...