Java知识点<6> 抽象类和接口

抽象和接口是支持抽象方法的两种机制,也是平时使用最频繁的内容,在架构设计方面也有很多涉及。通过本文进行一下知识点的整理。如果有不准确的地方,还请指正。

1. 抽象

1.1 首先明确什么是抽象方法,只有声明,没有具体方法体的方法我们称之为抽象方法,使用abstract进行修饰

1.2 含有抽象方法的类,我们叫做抽象类。PS:之前一次面试,一个小姐姐问我抽象类是不是必须含有抽象方法,我当时认为,抽象类的主要作用是,通过定义抽象方法来定义行为,然后通过子类继承抽象方法进行具体的实现。这才是抽象方法存在的意义。可是人家说抽象方法只要生命成abstract的,即使不包含抽象方法,那么他也是抽象方法。我T.T,那这个类声明成抽象类干嘛.. 不过回来查书发现,确实有这种说法,所以还是记住这个概念吧-》抽象类可以不包含抽象方法

1.3 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

2)抽象类不能用来创建对象;

3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

2. 接口

2.1 接口是将方法抽象出来,然后共别人调用

2.2 接口中可以含有变量和方法,但是变量都被定义成public final static , 方法被定义为public abstract

2.3 一个类可以实现多个接口


3 接口和抽象类的区别

3. 1.语法层面上的区别

1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

3.2.设计层面上的区别

1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。

2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值