热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Java技术路线】3.接口与抽象类

3.接口与抽象类3.1接口的定义与实现接口表示规范。在Java中定义接口使用interface关键字,所有方法自动是publicabstract。接口的作用&#

3. 接口与抽象类

3.1 接口的定义与实现

接口表示规范。在Java中定义接口使用interface 关键字,所有方法自动是public abstract。

接口的作用:
1.通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。从而在一定意义上实现了多继承。
2.通过接口可以指明多个类需要实现的方法。
3.通过接口可以了解对象的交互界面,而不需要了解对象所对应的类。
在java中,一般像如下方式编写接口。其中public表示该接口可以被所有的类调用。

public interface Collection{void add(Object obj);void delete(Object obj);Object find(Object obj);int size;
}

注意,接口中的方法都是抽象方法。

一个类可以实现多个接口

public class Student implements A,B,C,D{ //Student需要实现接口A B C D中所有的抽象方法 //否则Student类就要声明为抽象类,因为有抽象方法没实现
}
main:
A s1 = new Student();
B s2 = new Student();
C s3 = new Student();
D s4 = new Student();

注:

s1只能调用接口A中声明的方法以及Object中的方法

s2只能调用接口B中声明的方法以及Object中的方法

s3只能调用接口C中声明的方法以及Object中的方法

s4只能调用接口D中声明的方法以及Object中的方法

注:必要时可以类型强制转换

例如 : 接口A 中有test() , 接口B 中有run()

A s1 = new Student();
s1.test(); B s2 = new Student();
s2.run(); if(s1 instanceof B){ ((B)s1).run();
}

3.2 抽象类的定义与实现

接口与抽象类的区别:

抽象类也是类,除了可以写抽象方法以及不能直接new对象之外,其他的和普通类没有什么不一样的。接口已经另一种类型了,和类是有本质的区别的,所以不能用类的标准去衡量接口。

声明类的关键字是class,声明接口的关键字是interface。

抽象类是用来被继承的,java中的类是单继承。

类A继承了抽象类B,那么类A的对象就属于B类型了,可以使用多态

一个父类的引用,可以指向这个父类的任意子类对象

注:继承的关键字是extends

接口是用来被类实现的,java中的接口可以被多实现。

类A实现接口B、C、D、E…,那么类A的对象就属于B、C、D、E等类型了,可以使用多态

一个接口的引用,可以指向这个接口的任意实现类对象

注:实现的关键字是implements

抽象方法是使用abstract关键字修饰的成员方法,抽象方法在定义时不需要实现方法体。抽象方法的定义格式如下:

abstract void方法名称 (参数);

当一个类包含了抽象方法,该类必须是抽象类。抽象类和抽象方法一样,必须使用abstract关键字进行修饰。

抽象类的定义格式如下:

abstract class 抽象类名称{访问权限返回值类型 方法名称(参数){return [返回值] ;访问权限abstract返回值类型抽象方法名称(参数) ;//抽象方法,无方法体}

抽象类的定义规则如下。

(1)包含一个以上抽象方法的类必须是抽象类。

(2)抽象类和抽象方法都要使用abstract关键字声明。

(3)抽象方法只需声明而不需要实现。

(4)如果一个类继承了抽象类,那么该子类必须实现抽象类中的全部抽象方法。

注意:
使用abstract关键字修饰的抽象方法不能使用private修饰,因为抽象方法必须被子类实现,如果使用了private声明,则子类无法实现该方法。


推荐阅读
author-avatar
kenvilen_106
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有