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

本文深入探讨Java中的抽象类与接口的概念,包括抽象类的特点、接口的设计与使用方法,以及如何通过接口实现多继承的功能。同时介绍了接口的向上转型等核心特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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的,在之前版本常当用来放置常量,现在用枚举类来替代更加灵活方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值