JAVA学习日志之接口

面向对象的特点主要概括为抽象性、继承性、封装性、多态性

  • 抽象性——指对现实世界中某一类实体或事件进行抽象,从中提取共同信息,找出共同规律,反过来又把它们集中在一个集合中,定义为所设计目标系统中的对象。
  • 继承性——新的对象类由继承原有对象类的某些特性或全部特性而产生出来,派生类可以直接继承基类的共性,又允许派生类发展自己的个性。继承性简化了对新的对象类的设计。
  • 封装性——指对象的使用者通过预先定义的接口关联到某一对象的服务和数据时,无需知道这些服务是如何实现的。即用户使用对象时无需知道对象内部的运行细节。这样,以前所开发的系统中已使用的对象能够在新系统中分析、设计和编程的工作量,同时实现了信息隐藏。
  • 多态性——指不同类型的对象可以对相同的激励做出适当的不同响应的能力。多态性丰富了对象的内容,扩大了对象的适应性,改变了对象单一继承的关系。

抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更加特殊的“抽象类”——接口。接口里不能包含普通方法,这和抽象类不同,在接口中,所有的方法都必须是抽象的。接口的概念就是建立在封装的基础之上的,而接口的继承,多态以及接口在实际开发中的普遍应用,足以让其集Java面向对象特点为一体。

让规范和实现相分离,这就是使用接口的主要目的,更进一步说,有了接口,可使软件系统中各组件之间面向接口耦合,这是一种松耦合的设计,为系统提供更好的可扩展性和可维护性。可以说,接口使得即插即用在程序里成为可能。因此接口定义的是多个类共同的公共行为规范,这些行为是与外部交流的通道,这就意味着接口里通常是定义一组公用的未实现的方法。

接口的用法

接口使用的关键字不是class(确切地说接口只是一个规范,不再是一个有具体功能实现的类),定义一个接口需要使用interface关键字。

  • 接口的成员列表只能包含方法(其实是没有实现的抽象方法)及常量,而且常量必须在接口中定义的时候就初始化
  • 接口的所有成员默认都是public的,不再允许使用其他修饰符
  • 接口没有构造方法,也就是说,接口和抽象类一样不能创建自己的对象,但是它们均可以引用实现类(子类)对象
  • 接口可以继承接口,和类不同的是,接口继承其他接口的时候,是可以多继承的
  • 所有的接口实现类,当实现接口中的抽象方法时,其修饰符必须是public的

接口与抽象类

接口与抽象类看似相仿,其实它们还是有很大区别的。抽象类提供更多的是一种模板,子类继承父类、完善父类,体现的是一种对半成品加工改造完善为成品的过程,抽象类有助于代码复用。而接口体现的是一种对接口规定实现类必须要向外提供什么服务,接口有助于架构的分层。在一个程序中使用接口时,接口是多个模块间的耦合标准;在多个应用程序之间使用接口时,接口是多个程序之间的通信标准,所以接口一旦定义,就不应频繁变动,否则牵一发而动全身,可能系统的大部分类都要重写。

本人有多年java项目开发经验,在大大小小java项目中,总结写了这个通用日志信息记录开发包,愿结识各路好友。 压缩包,包涵使用实例,使用中如有疑问,可以QQ:120849208 以下是配置文件内容: #日志文件所在目录,不指定则为当前目录。特别注意,在windows的目录分隔符为"\\",例如 c:\\logs(重启后生效) logFileDirectory=./logs #日志文件主文件名(重启后生效) logFileMainName=ex #日志文件扩展名(重启后生效) logFileExtendedName=log #日志文件生成周期,分别为 0:不周期性产生文件;1:分钟;2:每小时;3:每天;4:每星期;5:每月;6:每年(重启后生效) logFileCycle=5 #当logFileCycle为1时有效,指定分钟数(重启后生效) logCycleMinutes=15 #要求跟踪级别,分别为 0:总是;1:错误;2:警告;3:普通(立即生效) logTrackLevel=3 #是否在日志记录前加日期时间字符串,取值0或1(立即生效) isAddDateTimeStringToHead=1 #当isAddDateTimeStringToHead为1时有效,表示时间串的格式,必须为java认识的时间格式;特别的,如果为“UNIX_TIMESTAMP”则时间以unix时间戳表示(立即生效) logHeadDateTimeStringFormat=yyyy-MM-dd HH:mm:ss #当isAddDateTimeStringToHead为1时有效,表示时间串和日志信息之间的间隔符,特别的,如果为空格请用双引号,例如:splitChar=" "(立即生效) splitChar=" " #是否在日志信息之后加换行符,取值0或1(立即生效) isAddNewLineToEnd=1 #是否在日志信息头加等级信息,取值0或1(立即生效) isAddLevelStringToHead=0 #日志信息是否输出到屏幕,取值0或1(立即生效) isLogTrackToScreen=1 #立即生效,日志信息是否输出到文件,取值0或1(立即生效) isLogTrackToFile=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值