一、动态绑定(迟绑定)

动态绑定:使用父类引用指向子类对象,可以带来比较不错的可扩展性,在方法的参数里面定义父类的引用,在对方法的使用过程中传子类的引用,并在执行期间(非编译期)在方法中判断该引用属于哪个子类,并根据其实际的类型调用其相应的方法。

动态绑定的内存图:

 

 

 根据方法的实际参数中的对象类型来进行接下来的操作。

二、多态

多态的存在的三个必要条件:继承、重写、父类引用指向子类对象。

当调用父类中被重写的方法时,实际new的是哪个子类对象,就调用哪个子类对象中的方法。

三、抽象类

 

 当一个子类继承一个抽象父类,父类中的抽象方法无法重写,则将该抽象方法复制到子类中,并将该子类声明为抽象类。或者对于不想实现的抽象方法,不copy抽象方法,直接将该类变成抽象类也行。

抽象类无法进行实例化,只能用来被继承;抽象方法必须被重写。

abstract总结:

  1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

  2、抽象方法必须由子类来进行重写。

  3、只要包含一个抽象方法的类,该类必须要定义成抽象类,不管是否还包含有其他方法。

  4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。

  5、abstract不能与final并列修饰同一个类。

  6、abstract 不能与private、static、final或native并列修饰同一个方法。

四、final关键字

final关键字--只读的。 

 

 public void m(final int j){

//j = 9; error   当传进来是一个final定义的变量,则该变量在方法中的值不能被改变

}

 

 

博客引用马士兵Java基础教程中的PPT,如有侵权,请联系删除,谢谢!

posted on 2020-04-07 20:01  走丢的蜗牛  阅读(146)  评论(0编辑  收藏  举报