Java基础--接口(Interface)

  • 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有个接口,就可以得到多重继承的效果。
  • 接口(interface)是抽象方法常量值的定义的集合。
  • 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
  • 实现接口类:

                 class SubClass implements InterfaceA{}

  • 一个类可以实现多个接口,接口也可以继承其它接口

--------------------------------------------------------------------------------------------------------------------------------------------------------------

                       

--------------------------------------------------------------------------------------------------------------------------------------------------------

接口的特点:

  •   用interface来定义。
  •   接口中的所有成员变量都默认是由 public static final修饰的。
  •   接口中的所有方法都默认是由 public abstract 修饰的。
  •   接口没有构造器
  •   接口采用多继承机制

接口定义举例

    

public interface Runner{
       int ID = 1;
       void start();
       public void run();
       void stop();
}
跟下面代码是一样的

public interface Runner{
      public static final int ID = 1;
      public abstract void start();
      public abstract void run();
      public abstract void stop();
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 实现接口的类中必须提供接口中所有方法的具体实现内容,方法可实例化。否则,仍为抽象类
  • 接口的主要用途就是被实现类实现。(面向接口编程)
  • 与继承关系类似,接口与实现类之间存在多态性
  • 定义Java的语法格式:先写extends,  后写implements           

                    <modifier> class < name> [extends < superclass>]

                    [implements< interface> [,< interface>]* ] {

                                < declarations>*

                    }

---------------------------------------------------------------------------------------------------------------------------------------------------------------------


public interface Runner {
	public void start();
	public void run();
	public void stop();
}
public class Person implements Runner {
	public void start() {
		// 准备工作:弯腰、蹬腿、咬牙、瞪眼				// 开跑
	}
	public void run() {
		// 摆动手臂
		// 维持直线方向
	}
	public void stop() {
		// 减速直至停止、喝水。
	}  }

 一个类可以实现多个无关的接口
interface Runner { public void run();}
interface Swimmer {public double swim();}
class Creator{public int eat(){…}} 
class Man extends Creator implements Runner ,Swimmer{
		public void run() {……}
		public double swim()  {……}
		public int eat() {……}
}
与继承关系类似,接口与实现类之间存在多态性
public class Test{
	public static void main(String args[]){
		Test t = new Test();
		Man m = new Man();
		t.m1(m);
		t.m2(m);
		t.m3(m);
	}
	public String m1(Runner f) { f.run(); }
	public void  m2(Swimmer s) {s.swim();}
	public void  m3(Creator a) {a.eat();}
}

-----------------------------------------------------------------------------------------------------------------------------------------------------

接口的其他问题

  • 如果实现接口的类中没有实现接口中的全部方法,必须将此类定义为抽象类
  • 接口也可以继承另一个接口,使用extends关键字
  • interface MyInterface{
    		String s=“MyInterface”;
    		public void absM1();
    	}
    	interface SubInterface extends MyInterface{
    		public void absM2();
    	}
    	public class SubAdapter implements SubInterface{
    		public void absM1(){System.out.println(“absM1”);}
    		public void absM2(){System.out.println(“absM2”);}
    	}
    

    实现类SubAdapter必须给出接口SubInterface以及父接口MyInterface中所有方法的实现。






              




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值