Java抽象类和接口

抽象类

在了解抽象类之前先说一下抽象方法的概念。
什么是抽象方法?
仅有声明而没有方法体的方法称为抽象方法,抽象方法必须被abstract关键字所修饰。

//抽象方法声明
abstract void fun();

什么是抽象类呢?
    包含抽象方法的类就叫做抽象类。如果一个类中含有一个或多个抽象方法,则这个类必须被限定为抽象的,但是如果一个类为抽象类,则这个类中可以没有抽象方法。即有抽象方法的类一定是抽象类,但抽象类不一定含有抽象方法(没有抽象方法的抽象类感觉没有什么意义)。抽象类作为一个基类,是反应诸多子类中的共性的部分,表示的是 is-a(是一个) 的关系,它有以下特点:
1、不能实例化对象(含有抽象方法)。
2、只能被继承(不被继承的抽象类没有意义),继承的子类需要实现抽象类中的抽象方法,或者只继承不实现,让子类的子类实现,此时子类也为抽象类。
3、抽象类中的抽象方法不能被private修饰(如果被private修饰,则对子类是隐藏的,子类就没法实现此抽象方法了)。

//抽象类的声明如下:
public abstract class AbstractClass {
}

接口

    接口是一系列抽象方法的集合,它是对行为动作的抽象, 表示的是 like-a 的关系,本身并不做任何操作,它可以含有变量和方法。接口声明如下:

//接口声明
public interface InterfaceName {
}

//一个类可以实现多个接口,此时必须实现接口中的抽象方法。
class DemoClass implements Interface1, Interface2 {
}

抽象类和接口的区别

1、抽象类可以含有非抽象方法,接口只能含有抽象方法,接口比抽象类更抽象。
2、子类通过extends继承抽象类,子类通过implements实现接口,子类都需要实现抽象类/接口中的抽象方法。
3、抽象类可以有构造方法,接口不能有构造方法。
4、抽象类中的抽象方法可以被除private外的限定符修饰,接口中的抽象方法只能被public修饰(默认为public)。
5、抽象类可以有成员变量,接口中没有成员变量,只有常量,接口中的变量会默认为public static final。
6、抽象类的子类只能单继承,接口的子类可以多实现接口。

抽象类和接口的使用

    抽象类表示的是is-a的关系,即是一个,代表的是继承关系,例如,猫和鱼都是动物的一种,此时就可以将动物设计为抽象类,猫和鱼继承动物抽象类。
    接口表示的是like-a的关系,即像一个,代表的是组合关系,例如,猫和鸡都有跑这个行为,此时就可以设计一个接口,将跑的行为作为接口中的抽象方法,猫和鸡实现这个接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值