Java接口

接口,在JAVA中是一个抽象类型,(是对行为的一种抽象)是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

创建一个接口(接口中不能有普通方法

interface A{
	public int age = 10;//数据成员默认是static final
	public void fun1();//方法默认是抽象方法  abstract  不能有具体的实现
}

接口的使用

1,实现类通过implements关键字来实现这个接口

interface A{
	public int age = 10;//数据成员默认是static final
	public void fun1();//方法默认是抽象方法  abstract  不能有具体的实现
}

//接口的实现
class C implements A{

	@Override
	public void fun1() {//实现接口中的方法
		// TODO Auto-generated method stub
		System.out.println("fun1!!!1");
	}

}

2,可以实现多个接口

interface A{
	public int age = 10;//数据成员默认是static final
	public void fun1();//方法默认是抽象方法  abstract  不能有具体的实现
}
interface B{
	int b = 100;
	public void fun2();
}
//接口的实现,可以实现多个接口
class C implements A,B{

	@Override
	public void fun1() {//实现接口A的方法
		// TODO Auto-generated method stub
		System.out.println("fun1!!!1");
	}

	@Override
	public void fun2() {//实现接口B的方法
		// TODO Auto-generated method stub
		System.out.println("fun1!!!2");
	}
	
}

3,接口不能通过new来进行实例化(可以通过向上转型)

public static void main(String[] args) {
		C c = new C();//看做它是一个派生类
		c.fun1();
		c.fun2();
		
		A a = new C();
		a.fun1();
		
		B b = new C();
		b.fun2();
		
	}
4, 在Java中,一个抽象类只能继承一个抽象类,但一个接口却可以使用extends关键字同时继承多个接口(但接口不能继承抽象类)。
interface A{
	public void fun1();
}
interface B{
	public void fun2();
}
//接口和接口之间也可以继承
interface C extends A,B{
	public void fun3();
}
class D implements C{

	@Override
	public void fun1() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void fun2() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void fun3() {
		// TODO Auto-generated method stub
		
	}
	
}
(1)一个抽象类只能继承一个抽象父类,而接口可以继承多个接口; 

(2)一个子类只能继承一个抽象类,却可以实现多个接口(在Java中,接口的主要功能是解决单继承局限问题)

5,接口可以继承接口,并且可以继承不只一个接口,但是不能实现接口。因为接口的成员方法都具有抽象属性,不具有方法体,无法实现继承的接口。

6, * 接口和抽象类的区别
 * 接口可以实现(继承--> 解决了Java单继承的问题)多个,类只能继承一个
 * 抽象类可以拥有非抽象方法,而接口内都是抽象方法
 * 接口的数据成员变量都是public static final

 * 接口是对行为的一种抽象,抽象类是对类整体的抽象

接口的例子

/**
 * 
 * @author wj
 *例:模拟银行存取款
1、	创建基接口BankAccount,包含 存款方法playIn(),取款方法withdraw(),查询余额方法getBalance()。
2、	创建接口ITransferBankAccount(继承基接口BankAccount),包含转账方法transferTo().
3、	创建类CurrentAccount(实现基接口ITransferBankAccount),类中包含私有数据成员:名字name和余额balance
	,并实现存款方法:playIn(),取款方法:withdraw(),查询余额getBanlance(),银行转账方法transferTo(),
	重载方法toString()方法,该方法返回银行当前账户中的余额。
4、	主函数中:拥有两个账户:分别为曹操和刘备,(1):曹操存款1000,刘备存款2000。
								(2):刘备向曹操转账1元钱,返回两个账户当前的余额。
 */
interface BankAccount{
	void playIn(int money);
	void withdraw(int money);
	int getBalance();
}
interface ITransferBankAccount extends BankAccount{
	void transferTo(CurrentAccount ca,int money);
}
class CurrentAccount implements ITransferBankAccount{
	
	private String name;
	private int balance;
	
	public CurrentAccount(String name, int balance) {
		super();
		this.name = name;
		this.balance = balance;
	}
	
	@Override
	public void playIn(int money) {
		// TODO Auto-generated method stub
		this.balance = this.balance+money;
	}

	@Override
	public void withdraw(int money) {
		// TODO Auto-generated method stub
		this.balance = this.balance-money;
	}

	@Override
	public int getBalance() {
		// TODO Auto-generated method stub
		return balance;
	}

	@Override
	public void transferTo(CurrentAccount ca,int money) {
		// TODO Auto-generated method stub
		ca.balance = ca.balance+money;
		this.balance = this.balance-money;
	}
	
}
public class Test5 {
	public static void main(String[] args) {
		CurrentAccount caocao = new CurrentAccount("caocao",0);
		CurrentAccount liubei = new CurrentAccount("liubei",0);
		caocao.playIn(1000);
		liubei.playIn(2000);
		liubei.transferTo(caocao, 1);;
		System.out.println("caocao balance :"+caocao.getBalance());
		System.out.println("liubei balance :"+liubei.getBalance());
	}
}

运行结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值