JAVA抽象类和接口的语法及异同

一、抽象类

1.概念

        在继承地层次结构中,每个新的子类都使类变得更加明确和具体。如果从一个子类向父类追溯,类就会变得更通用、更加不明确。类的设计应该确保父类包含它的子类的共同特征。有时候,一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的类成为抽象类。

2.知识点

        抽象类和常规类很像,但不能使用new操作符创建它的实例。它的实现由子类提供。一个包含抽象方法的类必须声明为抽象类。

        一个抽象方法只有方法头没有方法主体。格式为:访问修饰符 abstract 返回类型 方法名(参数列表);抽象方法的出现就使得在类上出现了一定的区分,将包含抽象方法的类称为抽象类。因此在声明抽象类时也需要加上abstract关键字。格式为:public abstract class 类名;抽象类可以含零至多个普通方法,也可以含零至多个抽象方法。但是,抽象类不允许被实例化,即其只能作为父类。若父类是抽象类,且子类不想成为抽象类,则子类必须将父类中的所有抽象方法重写为带方法体的普通方法,否则子类仍必须是抽象类。

        下面举例如何定义一个抽象类:

public abstract class Guns{
	public abstract void shoot();
	public abstract void speed();
}

        这样就定义了类名为Guns的抽象类。

        抽象类不能用new来创建实例,我们需要一个子类来实现其包含的所有抽象方法。

public class AK47 extends Guns{
	public void shoot() {
		System.out.print("AK47 shoot");
	}
	public void speed() {
		System.out.print("300m/s");
	}
}

二、接口

1.概念

        接口在许多方面都与抽象类很相似,但是它的目的是指明相关或者不相关的对象的共同行为。例如,使用适当的接口,可以指明这些对象是可比较的、可食用的或者可克隆的。

2.知识点

        在JAVA中,接口被看作是一种特殊的类。就像常规类一样,每个接口都被编译为独立的字节码文件。使用接口或多或少有点像使用抽象类。与抽象类相似,不能使用new操作符创建接口的实例。

        格式:public interface 接口名称

        在接口中的方法虽然没有说明是抽象方法,但默认其为public以及是抽象方法。

        下面举例如何定义一个接口:

public interface Gun{
	public void shoot();
	public void speed();
}

        这样就定义了名为Gun的接口。

        需要注意的是,即便两个方法前没有abstract,但这两个方法都是抽象方法。

        所以需要在子类中重写这俩方法,我们用implements关键字来实现接口:

public class M4A1 implements Gun{
	public void shoot() {
		System.out.print("M4A1 shoot");
	}
	public void speed() {
		System.out.print("450m/s");
	}
}

三、异同

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值