final关键字以及多态的概述

final
final关键字是最终的意思,可以修饰 类、成员变量、成员方法

修饰类,类不能被继承
修饰变量,变量就变成了常量,只能被赋值一次
修饰方法,方法不能被重写
在构造方法初始化完成之前赋值完毕(修饰的是非静态的常量)
常量:

字面值常量:
“java”、100、false
自定义常量:
修饰变量,变量就变成了常量
final int x = 100;//此刻的x就是一个常量
final变量的引入:
由于继承中有一个现象,子类的方法和父类的方法声明一样,出现重写现象,所以,父类的功能就会被子类覆盖。但有时候,我们不想让子类覆盖父类的方法或者功能,只能让子类使用,这个时候,针对这种情况,Java就提供了一个关键字:final

example:子类无法重写父类中被final修饰的方法

example2:final修饰的变量不能被修改

 

  • 面试题:final修饰局部变量
    1、在方法内部,该变量不能被改变
    2、final修饰引用数据类型的时候,引用的地址值不能发生改变,但是,该对象的堆内存里面的值是可以改变的

 

多态
多态概述:某一个事物,在不同时刻表现出来的不同状态
举例:
水:
固态、液态、气态
固态的水是水、液态的水是水、气态的水是水
水果:
苹果、香蕉、西瓜
苹果是水果、香蕉是水果、西瓜是水果
但不能说水果是苹果、水果是香蕉
我们通过观察这些例子发现,要想有多态,必须要有继承,继承是多态的前提
多态的条件:
要有继承的关系
要有方法的重写
其实没有也可以,但是没有重写就没有意义
要有父类引用指向子类对象
父 f = new 子();
多态中成员访问特点
成员变量
编译看左边,运行看左边
构造方法
创建子类对象的时候,先访问父类的构造方法,对父类的数据先进行初始化
成员方法
编译看左边,运行看右边
因为成员方法存在重写,所以访问看右边
静态成员方法
编译看左边,运行看左边
由于被static修饰的都是与类相关的,算不上重写,所以,运行的时候,访问的还是左边的
example:

  • 多态的好处
    1、提高了代码的维护性(这是继承保证的)
    2、提高了程序的扩展性(这是多态决定的)
  • 多态的弊端
    不能访问子类的特有功能

 正是因为不能访问子类中的特有功能,所以在多态中有了一个全新的概念:向下转型。

多态中转型的使用:
向上转型:Fu5 f = new Zi5();
向下转型:Zi5 z = (Zi5) f2;
注意:这样的转型,必须要求f2必须是能够转换成z的,也就是说,他俩必须要是继承关系。

内存结构图如下所示

 

 但是要注意一点的就是,多态转型中有一种异常,如下所示

 

感谢观看,我是酷酷的涛。请点个收藏和关注。谢谢。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值