Java中的抽象方法

本文深入解析了面向对象编程中的抽象类概念,介绍了如何定义抽象类和抽象方法,以及它们的区别和应用场景。重点讲述了抽象类的使用限制和继承特性,以及接口与抽象类的比较。实例演示了如何在Java中实现抽象类和重写抽象方法。
摘要由CSDN通过智能技术生成

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

如何定义抽象类:

 

在访问修饰符后添加一个abstract关键字就可以将该类定义为抽象类。

如何定义抽象方法:

 

抽象方法和抽象类的定义很相似,都是在访问修饰符后添加一个abstract关键字。我们要注意的是abstract只能用在普通方法,不能使用在被static关键字修饰的方法和构造方法中。

了解抽象抽象方法:

抽象方法是定义在抽象类中,它只能出现在抽象类中,当在抽象类中我们也可以定义非抽象方法。

当一个非抽象类去重写一个抽象类时,它必须去重写这个抽象父类中的所有抽象方法。所有抽象方法的访问修饰符不能被 private 修饰,因为在子类重写抽象类中的抽象方法时,需要进行访问。如果声明了private子类就不能对抽象父类中的抽象方法进行重写了。

抽象方法没有方法体。

例:在非抽象类中重写抽象类

抽象类:

 

子类:

 

了解抽象类和接口的同和不同

相同点:

可以定义多个抽象方法,在非抽象子类重写抽象方法和实现接口时,必须要在子类中重写抽象方法。

接口和抽象类都不能被实例化。

不同点:

抽象类可以存在构造方法,而接口中不能定义构造方法。

抽象类可以定义非抽象方法,而接口中的方法都是抽象方法。

抽象类中可以定义各种类型的成员变量,而在接口中声明的变量只能是常量。

抽象类只支持单继承,接口支持多继承。

抽象类中可以存在有方法体的方法,而接口的方法都是抽象方法,不能有方法体。

接口中都方法都是共有的。

回顾我们的抽象类:

抽象类不能被实例化,如果被实例化,会在编译阶段就报错。只有继承抽象类的非抽象子类能被实例化。

抽象类中的方法可以不是抽象方法,但抽象方法只能定义在抽象类之中。

构造方法和被static关键字修饰的方法不能被abstract关键字修饰。

抽象类的抽象方法没有方法体,就是没有实现功能的具体方法。

一个类继承了一个抽象类,如果这个类也是抽象类,那么它就可以不去重写继承抽象类的抽象方法。如果是其他类就必须要进行抽象。

抽象类中的抽象方法不能是被private访问修饰符修饰的,否则子类不能对其进行重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值