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 ...
随机推荐
- 腾讯云CentOS 6.6安装 Nginx
一.下载Nginx 从Nginx的官网(http://nginx.org/en/download.html)下载Nginx的最新版本,这里我下载的是nginx-1.9.12. 下载完成后,得到一个如下 ...
- Java正则表达式的应用
在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行提取.比如,我要从一段话aabdfe中,判断这段话是否有包含ab这个词,那么如果用if-else来判断 ...
- [汇编] 将字符串里的一个'&'字符换成空格
; multi-segment executable file template. data segment ; add your data here! pkey db "press any ...
- Leetcode 345 Reverse Vowels of a String 字符串处理
题意:倒置字符串中的元音字母. 用两个下标分别指向前后两个相对的元音字母,然后交换. 注意:元音字母是aeiouAEIOU. class Solution { public: bool isVowel ...
- VC多线程的用法
.h 文件 #define WM_TEST WM_USER + 1 class CTestThread : public CWinThread { DECLARE_DYNCREATE(CTest ...
- JS的event对象--知识点总结
Event描述:event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. 需要注意的是:event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有 ...
- AP6181 正基 WIFI 模块
a. Module size: 12*12mm (pin to pin compatible) Package: Stamp type 44pins AP6181: WiFiAP6210: WiFi/ ...
- Redis监控技巧(转)
来自:http://blog.nosqlfan.com/html/4166.html Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条命令,就能获得 Re ...
- BZOJ 4300: 绝世好题 动态规划
4300: 绝世好题 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4300 Description 给定一个长度为n的数列ai,求ai的 ...
- linq to entity 获取项的集合总数
IEnumerable<InspecReportsContextEntity> OnenewDate = lisConAll.Where(p => p.inspectime == t ...