java之接口interface
接口
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的更多相关文章
- java中接口interface和private私有内部类怎样一块配合着用?
3.接口interface和private内部类协同工作[新手可忽略不影响继续学习]马克-to-win:由于是private内部类,外面无法访问甚至无法看到你编的源代码(如果在不同的包中),非常安全. ...
- Java学习——接口Interface
接口: 初期理解可以认为是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.class用于定义类interface 用于定义接口 接口定义时,格式特点:1,接口中常量见定 ...
- Python - python里有类似Java的接口(interface)吗?
参考 https://stackoverflow.com/questions/2124190/how-do-i-implement-interfaces-in-python https://stack ...
- JAVA基础--接口 interface
接口是抽象方法和常量值定义的集合, 接口是一种特殊的抽象类, 只包含常量和方法的定义, 而没有变量和方法的实现. 接口->接口: extends, 类->类: extends, 类-> ...
- Java下接口interface前面要不要加I
说明:加I和不加I都可以,看需要,没有强制要求. 在Java中更多是提倡不加I的,可以看下JDK的源码,都是不加I的. 微软C#是规定要加I,这也是影响从而导致有这个话题的原因. Java中特定不直接 ...
- java中接口interface可以持有多个类的共享常量
3.接口持有多个类的共享常量 接口另一主要功能,马克-to-win: 可以使用接口来引入多个类的共享常量.所有的这些变量名都将作为常量看待.所有定义在接口中的常量都默认为public.static和 ...
- java中接口interface有什么用呢?举例!
接口只有方法的定义,没有方法的任何实现.那这有什么意义呢?马克-to-win: 接口就像一个服务合同.接口只关心必须得干什么而不关心如何去实现它.有 意义吗?有意义.马克-to-win:比如我们的软件 ...
- Java的接口(interface)属性和方法的类型
接口的属性必须是public static final Type 接口的方法必须是public abstract Type 不管你是全写,或只写部分,系统都会自动按上面的要求不全 也就是说 接口中 所 ...
- java中的接口interface
关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...
随机推荐
- 使用media Queries实现一个响应式的菜单
Media queries是CSS3引入的一个特性,使用它可以方便的实现各种响应式效果.在这个示例中我们将会使用media queries实现一个响应式的菜单.这个菜单会根据当前浏览器屏幕的大小变化而 ...
- SharePoint Client Object Model API 介绍以及工作原理解析
CSOM和ServerAPI 的对比 SharePoint从2010开始引入了Client Object Model的API(后文中用CSOM来代替),从名字来看,我们可以简单的看出,该API是面向客 ...
- 通过Greasemonkey实现网页图片自动点击
昨天受一个朋友所托,实现了一个在特定网页自动点击某超链接图片实现网页跳转功能的JavaScript脚本. 工具就是Firefox的Greasemonkey扩展插件.代码如下: // ==UserScr ...
- H5常用代码:适配方案1
在工作中接到H5项目,第一件想到的事就应该是屏幕适配问题,解决了屏幕适配,接下来的事才能真正开始.从此篇博客开始会连续记录下我经常用到的一些适配方案. 对于传统的PC项目,直接在移动端打开也都是会以视 ...
- atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php
atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php 实现方式有如下 1. Linq的实现原理流程(ati总结) 1 2. groupby 与 事 ...
- Javascript中DOM技术的的简单学习
第十四课DOM技术概述1:DOM概述 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节 ...
- windows必备,命令行工具cmder
下载cmder并安装! 64位可下,亲测: http://www.wmzhe.com/soft-31133.html 创建文件夹并进入文件夹命令: mkdir web-server && ...
- 配置JDK时环境变量path和JAVA_HOME的作用
1.PATH环境变量.作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.需要把jdk安装目录下的bin目录增 ...
- JavaScript 语句 for
循环for语句: for(var i =1;i<=5;i++)(初始条件:循环条件:状态改变) { 循环体 } 循环的作用:反复执行某段代码 四要素:初始条件.循环条件.循环体.状态改变 例题1 ...
- Avizo应用 - Home和Set Home
Avizo的数据展示区域中两个选项Home和Set Home,如下图: 接下来会通过一套岩心的数据处理,解释一下这两个选项的一个用处. 首先这个数据已经完成了过滤处理,体渲染效果如下: 然后进行数据分 ...