面向对象:多态和final关键字(超详细)

一.多态

1.1多态的概述

什么是多态?
        多态是在继承、实现情况下的一种现象,表现为:对象多态、行为多态。
多态的前提
        有继承/实现关系;存在父类引用子类对象;存在方法重写。
多态的注意事项
        多态是对象、行为的多态,Java中的属性(成员变量)不谈多态。

比如:Student和Teacher是Person的子类

1.2多态的好处

在多态形式下,右边的代码是解耦合的,更便于扩展和维护。

  • 怎么理解这句话呢?比如刚开始p1指向Student对象,show方法执行的就是Student对象的业务;假如p1指向Teacher对象 ,show方法执行的自然是Teacher对象的业务。

 定义方法时,使用父类类型作为形参,可以接收一切子类对象,扩展行更强,更便利。

1.3类型转换

虽然多态形式下有一些好处,但是也有一些弊端。 在多态形式下,不能调用子类特有的方法

多态形式下不能直接调用子类特有方法,但是转型后是可以调用的。这里所说的转型就是把父类变量转换为子类类型。格式如下:

    //如果p接收的是子类对象
    if(父类变量 instanceof 子类){
        //则可以将p转换为子类类型
        子类 变量名 = (子类)父类变量;
    }

 关于多态转型问题,我们最终记住一句话:原本是什么类型,才能还原成什么类型

二.final关键字

2.1final修饰符的特点

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

- final修饰变量:该变量只能被赋值一次。

- final修饰类:该类称为最终类,特点是不能被继承
- final修饰方法:该方法称之为最终方法,特点是不能被重写。

 

    报错

 

 例外 : 修饰引用类型的变量,我们是不能改变arr变量里的的地址值的,但是我们可以改变引用类型变量指向的对象的里面的内容.

2.2常量

  • 在实际运用当中经常使用final来定义常量
  • 被 static final 修饰的成员变量,称之为常量。

  • 通常用于记录系统的配置信息

 为了方便在其他类中被访问所以一般还会加上public修饰符
 常量命名规范:建议都采用大写字母命名,多个单词之前有_隔开 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
继承:在面向对象编程中,继承是指一个类(子类)可以从另一个类(父类)继承属性和方法的过程,子类可以添加自己的属性和方法,从而复用父类的代码。 抽象类:抽象类是不能直接实例化的类,它的主要目的是作为其他类的基类,并提供一个类似于接口的设计模式。抽象类可以包含实例变量和非抽象方法的实现,但其中至少有一个抽象方法需要由子类去实现。 接口:接口是一个规范,它定义了类与类之间的交互方式。接口中只有方法的声明,没有方法的实现,因此每个实现类都需要实现接口中的所有方法。 多态多态是指同一类型的对象,在不同的情况下可能会产生不同的行为。在面向对象编程中,多态性是一个对象(如类、接口、抽象类等)表现出多种类型或行为的能力。 构造函数:构造函数是一种特殊的方法,用于创建和初始化对象。每次创建类的新实例时,构造函数都会被调用一次。 static:static 关键字用于声明静态成员变量或静态方法。静态方法属于整个类,可以通过类名调用,而不需要创建类的实例。静态变量是共享的,在所有实例中保持相同的值。 finalfinal 关键字可以用于修饰类、方法或变量,它表示不可改变或不可继承。当一个类被声明为 final 时,它将不能被其他类继承。当一个方法被声明为 final 时,它将不能被重写。当一个变量被声明为 final 时,它将不能被重新赋值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序一定有bug

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

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

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

打赏作者

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

抵扣说明:

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

余额充值