一文读懂之java关键字abstract

abstract是java关键字之一。
抽象类
同下;
为什么要设计抽象类呢?
为了实现多态,(多态的三个条件是继承,子类重写父类方法,父类引用指向子类对象。)当某些类只希望作为父类使用,不希望被实例化。
特点:
1、必须使用abstract修饰该类

2、抽象类不能被实例化
在这里插入图片描述
3、抽象类只能作为父类使用(为什么说只能作为父类使用呢?因为被abstract修饰的类不能实例化,也就是没有对象,在面向对象的思想下,类是对对象的描述,而所有操作我们都需要对象去执行,因此它只能被别人继承,虽然它可以继承别的类,但是没有意义)
4、抽象类可以包含若干个抽象方法。
5、抽象类可以没有抽象方法。
6、有抽象方法的类一定要声明成抽象类。
7、任何抽象方法都定义了一个规则,因为抽象类的父类的抽象方法没有方法体,但是却规定了该方法要实现的功能(方法名),子类需要按照父类的要求给出具体实现,这也引出了接口的概念。(接口详见另一篇文章)。
抽象方法:
概念:被abstract修饰的方法。
特点:1、没有方法体。
2、在方法的参数列表后,使用 分号 结尾。
3、抽象方法不允许被调用。
4、子类继承抽象类,必须实现父类中所有的抽象方法或者该子类也定义为抽象类。在这里插入图片描述
为什么要设计抽象方法呢?
1、 抽象方法存在的意义在于被子类重写,来实现多态。
2、抽象方法是没有意义的,但是要实现此抽象方法定义了方法规则,不能被调用(为什么不能调用,因为调用对象方法,前提是有对象,但是抽象类不能实例化对象)。
3、如果一个类中包含了抽象方法,那么该类必须被定义为抽象类。在这里插入图片描述
最后-------
关于抽象有几个常见的小问题:
1、抽象方法是否可以使用final修饰?
不能,因为抽象方法是在子类中需要重写的,而final修饰的类没有子类,又被称为太监类(final详见此文章
2、final是否可以修饰抽象类?
不能,抽象类因为不能实例化对象,故只能做父类,而final类不能有子类。
3、私有方法是否可以使用abstract修饰?
不能,私有方法为父类所独有,不能被继承,故不能被重写,而抽象方法在子类中是要重写的。在这里插入图片描述
4、静态方法是否可以被重写?
不能,静态方法虽然能被继承,但是不能被重写
5、abstract是否可以修饰静态方法?
不能,理由同上
6、静态方法是否可以实现多态?
不能,因为静态方法不能被重写。而多态必须被重写。
7、类中的实例成员变量是否可以实现多态?
不能,多态是对于实例方法而言的。
总结:多态只对类中的实例方法有效,多态是对象功能的多态。java的多态也称为java的动态绑定技术。在运行期才能决定调用的是哪个实例方法。
关于抽象方法:抽象方法是父类定义的一个规则。规则是给子类规定的。规定了子类需要实现的功能,但是没有规定如何实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴成伟0122

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值