×

抽象类定义方法 抽象类 抽象类和抽象方法

什么是抽象类和抽象方法?抽象类和接口的区别是什么

admin admin 发表于2022-07-07 10:59:32 浏览92 评论0

抢沙发发表评论

什么是抽象类和抽象方法


抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。

在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。
抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。抽象类本身不具备实际的功能,只能用于派生其子类。抽象类中可以包含构造方法,但是构造方法不能被声明为抽象。
抽象类不能用final来修饰,即一个类不能既是最终类又是抽象类。
abstract不能与private、static、final、native并列修饰同一个方法。
程序举例:abstract
class
Animal
//定义抽象类
abstract
void
eat();
//定义抽象方法}class
Horse
extends
Animal
//定义继承Animal的子类
void
eat()
//重写父类的抽象方法
}class
Dog
extends
Animal
void
eat()
}class
test}运行结果:
马吃草料!
狗吃骨头!
如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快!
vae.la

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


抽象类和接口的主要区别是,定义不同、方法不同、成员变量不同,具体如下:

一、定义不同

1、抽象类

抽象类表示该类中可能已经有一些方法的具体定义。

2、接口

接口仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。

二、方法不同

1、抽象类

抽象类当中可以存在非抽象的方法。

2、接口

接口里面的方法只是一个声明必须用public来修饰没有具体实现的方法。

三、成员变量不同

1、抽象类

抽象类中的成员变量可以被不同的修饰符来修饰。

2、接口

接口中的成员变量默认的都是静态常量。

以上内容参考 百度百科-抽象类


抽象类和接口的区别


一、两者相同点

1、不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类里的抽象方法必须全部被子类所实现,子类不能全部实现父类抽象方法,那么该子类还只能是抽象类。一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

二、两者不同点 

1、默认的方法实现

抽象类可以有默认的方法实现;接口,Java8规定可以为接口提供默认实现的方法并且不用强。

2、实现

制子类来重写子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要重写抽象类中的抽象方法;接口子类使用关键字implements 来实现接口,它需要重写接口中没有默认。 

3、构造器

抽象类可以有构造器,接口不能有构造器。

4、与正常Java类的区别

除了不能实例化抽象类之外,和普通Java类没有任何区别;接口是完全不同的类型外。

5、访问修饰符

抽象方法可有public.protected和default、abstract修饰符。不能用privatestatic.synchronize、 native 修饰。

接口属性默认修饰符是publicstatic final (必须赋初值) ,方法默认修饰符是publicabstract. Java8 开始出现静态方法,多加static关键字。

6、main方法

并且可以运行它;接口没有main方法,因此不能运行它。

7、多继承

抽象类可以继承一个类和实现多个接口;接口只可以继承一个或多个接口。

抽象类的运用意义

在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。

这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。

由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。

为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。