面向对象的三大特征3:多态性

什么是多态性

什么是多态性

  • 同一个动作与不同的对象产生的不同的行为
  • 多态指的是一个对象的多种形态

多态的体现方式

  • 使用继承:不同的子类重写父类方法后,体现出来的形式不一样
  • 接口的实现

形成多态的必要条件

  • 多态的前提必须有继承或接口的实现
  1. 继承:存在子类和父类的关系
  2. 接口实现:定义一个类实现对用的接口
  3. 重写:子类重写了父类的方法
  4. 重载:调用相同的方法名,实现的功能不一样
  5. 子类对象的多态性(重点)

程序的两种状态

在这里插入图片描述

  • 一个是编译状态,一个是运行状态
  • 对于多态来说编译时看左边,你这个对象定义的是什么类型就是什么类型;运行时看右边,真正执行的对象,也就是子类对象执行的是子类重写后的方法

对象的转型(向上转型、向下转型)

对象的转型

  • 上转型
    将子类对象交给父类引用,可以自动转换
  • 下转型
    把父类转成子类,强制类型转换

对象的多态性

  • 父类的引用指向子类的实例
  • 在编译期间调用的父类的方法,真正执行的时候执行的是子类的方法
  • 编译时看左边,运行时看右边

instanceof运算符

instanceof运算符

instanceof 用于判断类型是否匹配 例如

// instanceof 用于判断类型是否匹配
if(pet instanceof Dog){//判断父类pet是否属于子类Dog的实例
Dog dog2=(Dog)pet;
dog2.sleep();
}else if(pet instanceof penguin){
Penguin pe1=(Penguin)pet;
pe1.swimming();
}

方法重写和重载的区别

在这里插入图片描述

final关键字、static关键字

final关键字

final关键字

代表最终的意思

  • 可以修饰什么?
  1. 修饰类
    1. 这个类有什么特点?
      这个类不能被继承,它就是一个“太监类”,但是可以继承别的类
  2. 修饰方法
    1. 这个方法有什么特点?
      代表这个方法是一个最终方法,不能被重写
  3. 修饰成员变量
    1. 修饰成员变量有什么特点?
      成员变量的值不可改变
      成员变量不会再有默认值
      如果使用final关键字,必须对成员变量进行赋值
  4. 修饰局部变量
    1.修饰局部变量有什么特点?
    局部变量的值不能改变,一般用它修饰一个常量

static关键字

在这里插入图片描述

静态的

  • static修饰成员变量(类本身)
  1. 修饰成员变量,这个变量就不属于对象了 而属于类本身;我们可以通过“类名.属性名”的方式访问
  2. 只要通过我这个类创建的对象,这些对象都可以共享这个属性
  3. 当其中一个对象对类变量进行更改以后,其他对象的这个类变量也会更改,VS实例变量(非static的变量,属于对象本身,各个对象都各自有一套副本)
  4. 类变量是随着类的加载而加载
  5. 类变量放在方法区的静态域里面

类变量只会被加载一次,所有对象共享类变量。

  • static 修饰方法(类方法)
  1. 修饰方法,这个方法就属于类本身了,我们可以通过“类名.方法名()”进行调用
  2. 随着类而加载(也是放在静态域里面)
  3. 在静态方法里面只能调用静态变量和静态方法,相反在普通方法里面可以调用静态方法和静态变量,因为静态方法或静态变量加载时机早于实例变量和实例方法
  4. 不能使用this和supper关键字
  • static 修饰代码块
    代码块的作用完成初始化
  1. 静态代码块
    里面可以有输出语句
    随着类的加载而加载,只会执行一次
    静态代码块的加载时机早于非静态代码块
  2. 非静态代码块
    可以给类的属性进行初始化的操作,同时还可以调用类的方法(静态、非静态的)
    每创建一个对象,非静态代码块就加载一次
  3. 静态代码块里面只能调用类变量和类方法
    作用:jdbc (四要素)驱动 用户名 密码 数据库的链接地址

对属性赋值:(1)默认初始化 (2)显示初始化 (3)通过set方法或者构造方法 (4)代码块

学习笔记

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值