Java抽象类和接口

抽象类

概述

抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。
拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。 public abstract class 类名

  • 抽象类中也能含有普通方法。
  • 不论抽象类是否含抽象方法,其都不允许实例化,即不能创建抽象类的对象。
  • 若父类是抽象类,且子类不想成为抽象类,则子类必须将父类中的所有抽象方法重写为带方法体的普通方法,否则子类仍必须是抽象类。

接口

概述

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)

  • 接口可以理解为一种特殊的类,里面全部是由全局变量公共的抽象方法所组成。

  • 接口是解决Java无法使用多继承的一种手段。Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。

  • 抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的

特点

就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体

  • 接口的目的是为了给其他类提供行为说明

  • 一个接口就是描述一种能力,比如“篮球运动员”也可以作为一个接口,并且任何实现“篮球运动员”接口的类都必须有能力实现投篮这个动作(或者implement shoot()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。

  • 如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类

  • 一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。

实现

为了声明一个接口,我们使用interface这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体。具体的方法体的实现是由继承该接口的类来去实现的。接口中的属性默认为Public Static Final。一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。

一个简单的接口就像这样:拥有全局变量和抽象方法。

interface xairy{
	final int x = 10;
	void display();
}

为了实现这个接口,我们使用implements关键词去实现接口:

class codexairy implements xairy{
	public void display(){
		System.out.println("xairy");
	}
}	

上图实现了接口中规定的display()方法。

抽象类与接口的比较

接口和所有方法都是抽象方法的抽象类非常类似。

  • 它不能被实例化
  • 在接口中所列的所有方法必须在别处被重写。
从语法层面

抽象类与接口是Java提供的对现实世界中的实体进行抽象的两种机制,二者具有很大的相似性,同时也具有明显的区别。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值