final关键字、抽象类

一、引入:

这个问题该如何解决呢?
1、使用private:

2、使用final关键字:

二、final(最终、修饰符)
1、final关键字的用法:
1)final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。
注意:final修饰变量时必须赋值,而没用final修饰的变量可以不赋值。

2)fianl关键字修饰一个引用类型变量时,该变量不能重新指向新的对象。

对比:

有这样一个问题需要注意一下:

3)final关键字修饰一个函数的时候,该函数不能被重写。

对比:

4)final关键字修饰一个类的时候,该类不能被继承。
条件:当有许多变量或者方法都不希望被随意修改时,这时如果给每一个前都加final修饰有些麻烦以及繁琐,所以我们可以给这些变量或者方法封装在一个final修饰的类中。

2、常量的修饰符一般为: public static final
常量的命名规范:全部字母大写,单词与单词之间使用下划线分隔。

public static final double PI = 3.14; //固定不变的

解释:
1)使用static的原因,如果没有static,每创建一个Circle对象,就会有一个pi属性,而实际情况是不希望有多个pi存在的,只要有一个pi供所有类使用即可。
2)使用public原因,因为这个值被改变不了,权限大些无所谓,并且权限大了可以供更多类使用。

三、抽象类:
1、举例:

1)存在的问题:a)动物类的run方法描述的不正确。 b)没有强制要子类一定要重写run方法。
2)解决方法:使用抽象类。

2、抽象类的应用场景:
我们在描述一类事物的时候,发现该种事物确实存在着某种行为,但是这种行为目前是不具体的,那么我们可以抽取这种行为 的声明,但是不去实现该种行为,这时候这种行为我们称作为抽象的行为,我们就需要使用抽象类。

3、抽象类的好处:强制要求子类一定要实现指定的方法。

4、抽象类要注意的细节:
1)如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象的函数。
2)如果一个类出现了抽象的函数,那么该类也必须使用abstract修饰。
3)如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现。

4)抽象类可以存在非抽象方法,也可以存在抽象的方法.
5)抽象类可以不存在抽象方法的。
6)抽象类是不能创建对象的。

疑问:为什么抽象类不能创建对象呢?
答:因为抽象类是存在抽象方法的,如果能让抽象类创建对象的话,那么使用抽象的对象调用抽象方法是没有任何意义的。
7)抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性的。

5、abstract不能与以下关键字共同修饰一个方法:
1)abstract不能与private共同修饰一个方法。

原因:private修饰后的方法,仅限于在本类中使用,出了这个类就无效了。但是用abstract修饰的类的子类必须重写所有父类的抽象方法,二者矛盾。
2)abstract 不能与static共同修饰一个方法。
原因:如果使用static修饰,那么就可以使用类名.方法名()调用抽象类中的方法了,但是这样无意义。
3)abstract 不能与final共同修饰一个方法。
原因:final修饰的方法为最终方法,不能重写,而抽象类要求其子类必须重写父类的所有抽象方法,这样二者矛盾。
2)和3)的报错信息和1)相同,此处不再举例

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值