java 第2集-----接口

一、接口功能

1.1、接口定义了一个类所能对外提供的一个功能(即方法)。接口不能被实例化,只能被实现。
1.2、接口可以理解为纯粹的抽象类,接口中的所以方法都是抽象的,接口描述了一种规则。
实例如下:
点击详见java抽象类问题

package g;
//使用interface声明一个接口,接口声明功能,类实现接口中声明的功能
interface Flyable{
	//public abstract 不是必须的,接口的默认方法是public abstract
	void Fly();//实际为public abstract void Fly();
	//void F();
	//void m();
}
//使用关键字implements来实现一个接口
class airPlane implements Flyable{
	//实现一个接口,必须实现接口中的所有功能,否则此类必须声明为抽象类
	public void Fly() {
		System.out.println("飞机能飞,飞机使用发动机飞");
	}
	
}
class Bird implements Flyable{
	public void Fly() {
		System.out.println("鸟能飞, 鸟使用翅膀飞");
	}
	
}

public class day809 {
	public static void main(String[] args) {
		Bird bird =new Bird();
		bird.Fly();//鸟能飞, 鸟使用翅膀飞
		airPlane plane = new airPlane();
		plane.Fly();//飞机能飞,飞机使用发动机飞
		
		//接口类型的变量可以引用实现了这个接口的类的实例
		Flyable  flyable1 =new Bird();//Bird实现了Fiyable接口,因此这个对象可以被flyable1引用
		flyable1.Fly();//鸟能飞, 鸟使用翅膀飞, 多态,会调用其引用对象的fly方法
		Flyable  flyable2=new airPlane();
		flyable2.Fly();//飞机能飞,飞机使用发动机飞, 多态,会调用其引用对象的fly方法
	}

}

1.3接口中的变量

接口中的变量总是public static final(静态常量),接口中的变量不能声明为private

interface exampleInterface1{
	//接口中的变量默认是--public static final,静态常量
	//下面value1,value2,value3,value4,都是public static final
	int value1=10;
	public int value2=10;
	public static int value3=10;
	public static final int value4=10;
	//private int value5=10;编译错误
}

1.4接口中的方法-----默认为public abstract

void method1();
		//接口中的方法不允许有private
	//private void method6()//编译错误

1.5接口继承

interface SubInterface1 extends exampleInterface1{
	void method3();
}
class c1 implements SubInterface1{
	public void method1() {}
	public void method3() {}
}
interface exampleInterface2{
	void method2();
}
//一个类要实现多个接口,它必须要实现接口中的所有方法。
//可以不实现接口中的所有方法,但是类必须声明为抽象的
class SampleImp1 implements exampleInterface1,exampleInterface2{
	public void method1() {
		System.out.println("method1的实现");
		}
	public void method2() {
		System.out.println("method2的实现");
		
	}
}
public class day810 {
	public static void main(String[] args) {
		exampleInterface1 i1=new SampleImp1();
		i1.method1();//调用SampleImp1对象的method1方法
		//i1.method2();//编译看变量类型,exampleInterface1类型变量,无method2方法
		
		exampleInterface2 i2=new SampleImp1();
		//i2.method1();//编译看变量类型,exampleInterface2类型变量,无method1方法
		i2.method2();
		
		exampleInterface1 i3=(exampleInterface1)i2;//将变量类型为exampleInterface2
		//的i2强制转换为exampleInterface1,就可以调用method1了
		i3.method1();		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值