抽象类和接口 旧城等待, 2022-06-01 22:40 280阅读 0赞 ## 一、抽象类 ## ### 1、基本概念 ### 在Java语言中,使用关键字abstract来修饰的类称之为抽象类。抽象类的功能是将子类可能具有的共同功能(类成员方法)和属性(类成员属性)抽象到一个抽象基类当中,这样就能最大程度地提高代码的复用性。 抽象类是对整个类整体进行抽象(行为和属性),抽象类表示的是:这个对象是什么。 ### 2、抽象类的定义规则 ### (1)抽象类必须使用关键字abstract来修饰,抽象方法也必须使用关键字abstract来修饰,抽象方法只需声明,不需实现。另外,抽象类当中也可以实现一些子类可能共用的普通方法。 (2)子类继承抽象类的时候,必须实现抽象类当中所有的抽象方法,否则这个子类就必须声明为抽象类。 (3)抽象类不能实例化,即不能使用new关键字产生抽象类的实例对象。 ### 3、为什么使用抽象类 ### 正如前面所说,抽象类抽象了子类可能具有的共同功能和属性,这种抽象特性可以让程序的代码复用性最大程度地提高。同时,抽象类是实现面向对象程序设计的多态性(动态联编)的一种手段,它通过父类对象指向子类的实例对象来实现动态联编。 ## 二、接口 ## ### 1、基本概念 ### 接口(interface)是Java实现多重继承的一种手段。接口是对类的行为进行抽象,接口大致规划了类具有的共同行为(类成员方法),而把具体实现留给具体的类。 接口是抽象方法和常量值定义的集合。从本质上来说,接口是一种特殊的抽象类,它里面只包含常量和抽象方法的定义,而没有方法的实现。 ### 2、接口的定义规则 ### (1)接口中只进行方法的声明,不提供方法的实现。在接口中声明的方法具有public和abstract属性。 (2)接口中声明的方法默认为public,因此类实现接口方法的时候一定要用public来修饰。如果某个接口方法没有实现,那么实现接口的类必须将它声明为抽象方法,该类也必须声明为抽象类。 (3)接口定义的常量具有public、static、final属性,常量必须在声明的时候就进行初始化。 ### 3、为什么使用接口 ### (1)接口的目的是为了让类不必受限于单一继承,可以灵活地继承一些共有的特性,从而实现多重继承。接口也是实现多态性的一种手段,通过接口对象执行子类的实例对象实现动态联编。 (2)接口是对类行为的抽象,跨越了不同的类。 ## 三、抽象和接口的区别 ## ### 1、语法层面上的区别 ### (1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法; (2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的; (3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法; (4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。 ### 2.设计层面上的区别 ### (1)抽象类是对整个类整体进行抽象(行为和属性),但是接口是对类的行为进行抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。 (2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。 (3)当你关注一个事物的本质的时候,用抽象类;当你关注一个行为(操作)的时候,用接口。 (4)抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的 所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。 参考资料: https://www.cnblogs.com/dolphin0520/p/3811437.html http://blog.csdn.net/fenglibing/article/details/2745123
相关 抽象类和接口类 一、抽象类和接口的定义: 抽象类(abstract class): 使用abstract修饰符修饰的类。 实际点来说,一个抽象类不能实例化,因为“没有包含足够多的信息来描 ╰半夏微凉°/ 2024年03月26日 11:49/ 0 赞/ 94 阅读
相关 java 抽象类和接口——抽象类 文章目录 抽象类 抽象类概念 抽象类语法 抽象类特性 抽象类的作用 抽象类总结 抽象类 ゝ一世哀愁。/ 2023年10月05日 23:24/ 0 赞/ 89 阅读
相关 抽象类和接口 转自牛客网 题目![题目][Center] 1、抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、n 男娘i/ 2022年06月15日 01:29/ 0 赞/ 277 阅读
相关 抽象类和接口 一、抽象类 1、基本概念 在Java语言中,使用关键字abstract来修饰的类称之为抽象类。抽象类的功能是将子类可能具有的共同功能(类成员方法)和属性(类成员属性 旧城等待,/ 2022年06月01日 22:40/ 0 赞/ 281 阅读
相关 抽象类和接口 抽象类和接口 一、抽象类的特点 \ a:抽象类和抽象方法必须用abstract关键字修饰 \ abstract 我就是我/ 2022年05月20日 00:50/ 0 赞/ 338 阅读
相关 接口和抽象类 接口就是一份契约,方法名,返回值,抛出的异常你都得按照我的来。 抽象类包含一组具体的特征,比如某些品牌特定型号的汽车,底盘,控制电路,刹车系统等是抽象出来的特征,是一样的,但 以你之姓@/ 2022年04月15日 00:39/ 0 赞/ 323 阅读
相关 抽象类和接口 抽象方法: abstract:抽象的。可以修饰方法和类。 抽象:模糊、不具体。 抽象方法 1.使用关键字abstract修饰。 2.抽象 本是古典 何须时尚/ 2022年03月28日 10:18/ 0 赞/ 361 阅读
相关 抽象类和接口 1.抽象类 包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法 抽象类是不可以被实例化的 2.接口 接口中所有的方法都是抽象的 接口中定义的方法默认使用 向右看齐/ 2021年09月26日 13:04/ 0 赞/ 454 阅读
相关 接口和抽象类 接口和抽象类的区别,实不相瞒,我忘记了? > 在Java基础部分,接口和抽象类是相当重要的知识点,尤其是接口,在后面的开发中,经常会见到这么四个字“面向接口编程",而且对 ﹏ヽ暗。殇╰゛Y/ 2021年09月08日 11:44/ 0 赞/ 535 阅读
还没有评论,来说两句吧...