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 ...
随机推荐
- 使用grunt打包ueditor源代码
支持版本支持 UEditor 1.3.0+ 的版本 使用方法1.线上下载ueditor下载地址:ueditor,要下载"完整版 + 源码" 2.安装nodejs下载nodejs并安 ...
- LEA指令
格 式:LEA OPRD1,OPRD2 功 能:将有效地址传送到指定的的寄存器 OPRD1 为目的操作数,可为任意一个16位的通用寄存器. OPRD2 为源操作数,可为变量名.标号或地址表 ...
- Web的26项基本概念和技术
---恢复内容开始--- Web开发是比较费神的,需要掌握很多很多的东西,特别是从事前端开发的朋友,需要通十行才行.今天,本文向初学者介绍一些Web开发中的基本概念和用到的技术,从A到Z总共26项,每 ...
- MultiTouch————多点触控,伸缩图片,变换图片位置
前言:当今的手机都支持多点触控功能(可以进行图片伸缩,变换位置),但是我们程序员要怎样结合硬件去实现这个功能呢? 跟随我一起,来学习这个功能 国际惯例:先上DEMO免费下载地址:http://down ...
- javaweb学习总结(十九)——JSP标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- javascript设计模式与开发实践阅读笔记(9)——命令模式
命令模式:有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么,此时希望用一种松耦合的方式来设计软件,使得请求发送者和请求接收者能够消除彼此之间的耦合关系. 说法很复 ...
- 01、手把手Android攻城入门
1.Android开发环境搭建: Eclipse Java EE IDE + ADT-23.0.6 + android-sdk-21-with-sdk-manager-r23.0.2 (安卓5.0)+ ...
- RFID 仿真/模拟/监控/拦截/检测/嗅探器
Sound card based RFID sniffer/emulator (Too tired after recon.cx to do draw the schematics better th ...
- RTP-RTCP-RTSP协议的区别与联系
一.产生的背景 随着互连网的发展,人们已经不满足于传统的HTTP,FTP和电子邮件等文本信息和服务,而对内容丰富多彩的多媒体信息,服务以及多媒体通信方式提出了需求,包括声音,图象,图形,视频信息等等, ...
- Linux Futex的设计与实现(转)
引子在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序" ...