Java抽象类与抽象方法

一、抽象类和普通类区别

1、和普通类比较起来,抽象类它不可以被实例化,这个区别还是非常明显的。

2、除了以上的一点之外,抽象类它能够有构造函数,被继承的时候,子类就一定要继承父类的一个构造方法,但是,抽象方法不可以被声明成静态。

3、在抽象类当中,可以允许普通方法有主体,抽象方法只需要申明,不需要实现。

4、含有抽象方法的类,必须要申明为抽象类。

5、抽象的子类必须要实现抽象类当中的所有抽象方法,否则的话,这个子类也是抽象类。

6、抽象类它一定要有abstract关键词修饰

7、抽象类的访问权限

#jdk1.8之前,访问权限限制于public和protected,假如不写由或者是是private,那么就不能够被子类继承

#jdk1.8-11将访问的权限变成了public 、protected以及default

二、延伸阅读

除了介绍区别之外,我们还可以来了解一下以下的内容。(几个常见问题)

1、抽象类能够有构造函数吗?

答案:抽象类是可以有构造函数的

抽象类的构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生。

那么你知道吗?其实,除了以上之外,抽象类的构造函数还会有一种非常巧妙的应用。

这种巧妙的应用就是,在其内部实现子类必须执行的代码。


二.一个抽象类中可以定义构造器吗?

抽象类必须被子类继承来实现。
子类在调用父类时 无论自己有没有构造方法都会先去执行父类无参的函数。哪怕父类是抽象类。虽然抽象类不能被实例化,但是可以在构造方法中初始化一些参数;也可以在子类中调用父类的构造方法。

三.为什么抽象类不可以使用final关键字声明?

抽象类和普通类的区别我们做了以下7点简单的总结,相信看了的朋友应该都会很清楚的了解了,一起来看看。

下面是具体的区别之处。

抽象类的组成和普通类的区别不大,但是由于有一点点使用以及定义的区别,所以会有以下概念会被忽略
1.抽象类里面由于会存在一些属性,在抽象类中一定会存在抽象方法,目的为属性初始化,并且子类对象初始化时依然满足于,先执行父类构造,再执行子类构造的情况
2.抽象类不能使用final定义:因为抽象类必须有子类,而final定义的类不能有子类
3.外部的抽象类不允许使用static声明,而内部的抽象类允许使用static声明,使用static声明的内部抽象类就相当于一个外部抽象类,继承的时候使用"外部类.内部类"的形式表示类名称

确定抽象类中存在构造方法

4.任何情况下,如果要执行类中的`static`方法的时候,都可以在没有对象的时候直接调用,对于抽象类也是一样
5.有些时候,由于抽象类只需要一个特定的系统子类操作,所以可以忽略掉外部子类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值