多态

2018-10-14  本文已影响0人  爱做梦的严重精神病患者

1.类设计技巧


2.多态

一个对象变量可以指示多种实际类型的现象被称为多态。在Java语言中,对象变量时多态的。一个父类变量既可以引用一个父类对象,也可以引用任何一个子类对象
 然而,不能将一个父类的引用赋给子类变量


3.理解方法调用

 假设要调用x.f(args),x是C类的对象。下面是调用过程的详细描述:

  1. 编译器先列出C类中名为f的方法和其超类中访问属性为public且名为f的方法。(可能存在多个名为f,但参数类型不一样的方法)。
  2. 重载解析。编译器根据调用方法时提供的参数类型,与上一步列出的方法进行匹配
  3. 如果是private方法、static方法、final方法或者构造器,编译器可以准确地知道应该调用哪个方法,这种方式称为静态绑定
  4. 当调用的是public方法,编译器会根据x的实际类型,自动选择调用哪个方法,这种方式叫做动态绑定。(例如C类存在一个和C的超类签名相同的f方法,具体调用哪个会根据x引用对象的实际类型来决定)

 如果在子类中定义了一个与超类签名(方法名和参数类型)相同的方法,那么子类中的这个方法就覆盖了超类中的这个相同签名的方法
 不过,返回类型不是签名的一部分,因此,在覆盖方法时,一定要保证返回类型的兼容性。允许子类将覆盖方法的返回类型定义为原返回类型的子类型。(可以将覆盖方法的返回类型改写为子类的类型)


4.final关键字

 final修饰变量的时候,表示该变量为常量,一旦赋值,变量的值便不再更改。
 final修饰的时候,表示该类不允许被扩展,即不可被继承
 final修饰方法的时候,表示子类不能覆盖该方法

 如果将一个类声明为final,只有其中的方法自动成为final,而不包括域

上一篇 下一篇

猜你喜欢

热点阅读