Java多态

什么是多态?

定义:同一个对象,在不同时刻表现出来的不同形态。
多态的前提:

  • 要有继承或实现关系
  • 要有方法的重写
  • 要有父类引用指向子类对象

多态中的成员访问特点

在多态的实际应用中,

  • 当调用成员变量时编译看父类,运行看父类(就是在idea工具书写的时候是否报错取决于父类是否有该变量,在程序运行时该变量值取决于父类)
  • 当调用成员方法时编译看父类,运行看子类(就是在idea工具书写的时候是否报错取决于父类是否有该方法,在程序运行时该方法内容取决于子类)
  • 注意:成员变量、成员方法不同的原因是成员变量不可以被重写。

多态的利与弊

利:多态的使用提高了程序的可扩展性,(使用父类型作为传递的参数,在使用的时候,使用具体的子类型参与操作)
弊:不能使用子类特有成员(解决方法:利用多态的转型:向下转型)

抽象类

  • 在为子类做共性功能抽取时,有一些方法在父类中并没有具体的体现,这时候需要定义为抽象类(抽象类中可以包含方法体)
  • 特点1:abstract关键字修饰类与抽象方法、抽象类的子类要么是抽象类要么重写所有父类的抽象方法
  • 特点2:可以有变量、常量,有构造方法(抽象类的构造方法用于其子类引用,自己不能创建对象)

接口

  • Java中的接口更多的体现在对行为的抽象

  • 接口不能被实例化,所以采用多态形式调用:具体类多态、抽象类多态、接口多态

  • 接口的子类:要么重写接口中的所有抽象方法、要么子类也是抽象类

  • 特点1:接口中的成员变量默认修饰符为public static final (常量)

  • 特点2:没有构造方法,接口主要是扩展功能的,没有具体的存在

  • 特点3:成员方法默认修饰符public abstract

类和接口的关系

  • 类与类之间仅可以单继承,但是可以多重继承
  • 类与接口之间可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口与接口之间的关系,可以单继承,也可以多继承

抽象类和接口的区别

  • 成员区别:
    抽象类:
    变量,常量;有构造方法;可以有抽象方法,也可以有非抽象方法
    接口:
    常量;抽象方法

  • 关系区别:
    类与类:
    继承,单继承
    类与接口:
    实现,可以单实现,也可以多实现
    接口与接口:
    继承,单继承,多继承

  • 设计理念区别
    抽象类:
    对类抽象,包括属性、行为
    接口:
    对行为抽象,主要是行为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值