×

java抽象类与接口

java抽象类与接口(java 抽象类和接口的区别不要贴别人的谢谢!!!)

admin admin 发表于2023-07-14 21:12:58 浏览39 评论0

抢沙发发表评论

本文目录

java 抽象类和接口的区别不要贴别人的谢谢!!!

接口和抽象类之间的关系:相同点:(1)接口和抽象了都不能被实例化,它们都位于继承树的顶端,用于被其他的类实现和继承。(2)接口和抽象类都是可以包含抽象方法的,实现接口或是继承抽象类的普通子类都必须实现这些抽象方法。不同点:(1)接口只能包含抽象方法,不能包含已经提供实现的方法;抽象类则完全可以包含普通的方法(2)接口不能定义静态方法;抽象类完全可以定义静态方法。(3)接口中只能定义静态常量Field,不能定义普通的Field;抽象类既可以定义普通的Field也能定义静态常量Field(4)接口不能包含构造器;抽象类中可以包含构造器,抽象类中的构造器并不是用于创建对象的,而是让其子类调用这些构造器来完成抽象类的初始化操作。(5)接口里面不能够包含初始化块;但是抽象类里面则完全可以包含初始化块(6)一个类最多只能有一个直接父类,包括抽象类;但是一个类可以直接实现多个接口,通过实现多个接口可以弥补Java中的单继承的不足。

java中接口和抽象类的区别是什么

定义的关键字:abstract class;interface;组成:常量,变量,抽象方法,普通方法,构造方法;全局常量,抽象方法;权限:可以是各种权限;只能是public;关系:抽象类可以实现多个接口;接口不能实现抽象类;使用:子类利用extends;子类利用implements实现接口;涉及的设计模式:模板设计模式;工厂,代理设计模式;局限性:一个子类只能继承一个抽象类;一个子类可以继承多个接口;如果抽象类和接口都能实现的操作,一般选择接口,因为可以避免单继承局限;

java之接口和抽象类的区别

  • 抽象类:

  • 抽象方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun();

  • 如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。

  • 特点:

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

  • 抽象类不能用来创建对象

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

  • 接口:

  • 接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误)

  • 接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法

  • 区别:

  • 抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 “是不是“的关系,而 接口 实现则是 “有没有“的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。

  • 语法:

  • 设计:

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

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

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

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

JAVA 接口和抽象类的区别

区别点:1)定义:抽象类是用abstract关键字修饰,包含至少一个抽象方法的类;接口是用interface修饰的抽象方法和全局常量的集合。2)组成:抽象类由构造方法、抽象方法、普通方法、常量和变量组成;接口由常量和抽象方法组成。3)使用:子类继承抽象类(extends);子类实现接口(implements)4)关系:抽象类可以实现多个接口;接口不能继承抽象类,但允许继承多个接口。5)常见设计模式:抽象类的常见设计模式是模板设计;接口的常见设计模式是工厂设计和代理设计。6)对象:抽象类和借口都是通过对象的多态性昌盛实例化对象。7)局限:抽象类只能单继承;接口没有单继承的局限。8)实际:抽象类被用作一个模板;接口被作为一个标准或表示一种能力;9)选择:如果抽象类和借口都可以使用,则优先使用接口,避免单继承的局限。10)特殊:一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类。