接口

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. 从源代码分析Android-Universal-Image-Loader的缓存处理机制

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  2. python 守护进程 daemon

    python 守护进程 daemon # -*-coding:utf-8-*- import sys, os '''将当前进程fork为一个守护进程 注意:如果你的守护进程是由inetd启动的,不要这 ...

  3. [游戏模版4] Win32 显示鼠标位置

    >_<:use MOUSE_MOVE message refresh the position information. >_<:use LOWORD(lParam) get ...

  4. atitit. js 跨界面 页面 web cs 传值方法总结

    atitit. js 跨界面 页面 web cs 传值方法总结 #--需求 js #---两个方法:   直接传跟跟间接传递... 1.直接传跟new form(param)    web使用url方 ...

  5. .NET Framework各版本汇总以及之间的关系

    目录(?)[-] 原文链接:http://blog.csdn.net/kingmax54212008/article/details/25886345 NET Framework 版本关系 获取NET ...

  6. Android动画及图片的缩放和旋转

    Android动画有2种,一种是Tween Animation,另一种是Frame Animation,先说说Tween动画吧. Tween动画是对视图对象中的内容进行一系列简单的转换,比如位置的移动 ...

  7. Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 (转载)

    最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...

  8. php-fpm.conf 重要参数 max_children 和 request_terminate_timeout(转)

    php-fpm.conf有两个至关重要的参数:一个是”max_children”,另一个是”request_terminate_timeout”我的两个设置的值一个是”40″,一个是”900″,但是这 ...

  9. zz Windows 10安装教程:硬盘安装Win10 系统步骤(适合32位和64位)

    Windows 10安装教程:硬盘安装Win10 系统步骤(适合32位和64位) Posted on 2015年01月28日 by 虾虾 22 Comments   最新的Windows 10 MSD ...

  10. 轻松搞定面试中的二叉树题目(java&python)

    树是一种比较重要的数据结构,尤其是二叉树.二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒.二叉 ...