面向对象——多态

多态

多态,polymorphism 即多种形态,模糊策略,以不变应万变,使用多态可以编写更加通用的代码。

静态绑定和动态绑定

静态绑定(静态联编): 在编译期完成,可以提高代码执行速度。静态绑定的方法包括:

  1. 静态方法
  2. 构造器
  3. private方法
  4. 用关键字super 调用的方法

动态绑定(动态联编):指在“执行期间(而非编译期间)” 判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 这虽然让我们编程灵活,但是降低了代码的执行速度。

实现多态的条件

要发生多态有三个必要条件:要有继承,要有重写,父类引用指向子类对象

对象转型

一个基类的引用类型变量可以“指向”其子类的对象。
一个基类的引用不可以访问其子类对象的新增成员(包括属性和方法)。
子类对象可以当作基类的对象来使用,称作向上转型(upcasting),反之称为向下转型(downcasting)

instanceof

向下转型—强制转换,是有风险的, 可能会出现类型转换异常ClassCastException,为了降低这种风险性,我们可以使用Java中的instance运算符,在强转前进行一次判断

抽象类

用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。
含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写
抽象类不能被实例化
抽象方法只需声明而不需要实现
抽象类的定义:

A:抽象方法定义的格式:
         public abstract 返回值类型 方法名(参数);
B: 抽象类定义的格式:
         abstract class 类名 {
 }
接口

接口中声明属性默认为 public static final 的,也只能是public static final的;
接口中只能定义抽象方法,而且这些方法默认为public的,也只能是 public的
接口可以继承其他的接口,并添加新的属性和抽象方法
接口不能实现另一个接口,但可以继承多个其它接口
定义格式:

  interface   Flyanimal{   
  void fly();
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值