Think in java(三)再论抽象类,接口

之前由文章介绍过抽象类与接口,今天在深入一点

Java语言程序设计-基础篇(十)抽象类,接口与包装类

1.抽象类

包含抽象方法的类称为抽象类,抽象类不可创建对象,如果某个抽象类的子类想要实例化对象,必须实现抽象父类中所有方法的定义。创建抽象类和抽象方法可以使类的抽象明确起来。

2.接口

结构允许创建者确定方法名,参数列表和返回类型,但是没有任何方法体,允许类继承多个接口,实现类似多冲继承的功能。接口也可以包含域,但是都是隐式的final和static的。接口也可以继承接口,一个类只能继承一个类,但是可以继承多个接口。

3.完全解耦

接口相对于类来说,会降低耦合性,增加代码的复用。

4.接口的向上转型

一个类可以继承多个接口,并且可以向上转型为每个接口,每一个接口都是一个独立的类型。下面看一个接口向上转型的实例

package test;

interface CanFly{
	void fly();
}

interface CanFight{
	void fight();
}

interface CanSwim{
	void swim();
}

class Action{
	public void fight(){
		System.out.println("Action fight");
	};
}

class Hero extends Action implements CanFight,CanSwim,CanFly{

	@Override
	public void swim(){
		System.out.println("swim");
	};
	public void fly(){
		System.out.println("fly");
	};
	
}

public class Interface{
	public static void t(CanFly x){x.fly();}
	public static void u(CanSwim x){x.swim();}
	public static void v(CanFight x){x.fight();}
	public static void x(Action x){x.fight();}
	public static void main(String[] args){
		Hero h = new Hero();
		t(h);
		u(h);
		v(h);
		x(h);
	}
	

}

运行结果

fly
swim
Action fight
Action fight

可以看到Hero组合了多个接口,在主类中使用四个方法,把上述接口作为参数传递,意味着可以被向上转型为每一个接口,是使用接口的核心原因,另一个原因是防止客户端程序员创建该类接口的对象,确保这只是一个接口。

5.接口中的域

接口中的域是static,final的,在之前版本常当用来放置常量,现在用枚举类来替代更加灵活方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值