java基础——随笔02

重载规则:

 

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。

 

 

 

 

重写与重载之间的区别

区别点重载方法重写方法
参数列表 必须修改 一定不能修改
返回类型 可以修改 一定不能修改
异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常
访问 可以修改 一定不能做更严格的限制(可以降低限制)

总结

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

 

  • (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
  • (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
  • (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

 

 

 

 

 

PS:

 

 

重写是父类与子类之间多态性的一种表现——多态:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

多态——父类引用指向子类对象:Parent p = new Child();

 

当使用多态方式调用子类里的方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法

多态:指子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。 

 

 

 

 

 

 

 

 

 

 

 

多态的实现方式

 

方式一:重写:

这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)

 

 

方式二:接口

  • 1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。

  • 2. java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。

 

 

方式三:抽象类和抽象方法

 

 

=========================================================

 

 

简单理解:重写、重载是多态的表现形式(实现形式)。

 

 

 

多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();            ----------  参考继承中的示例

 

 

 

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

 

 

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

 

 

 

 

 

 

 =====================================================================================================

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用多态的好处:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

对象的向上转型:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

对象的向下转型:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用instanceof关键字进行类型判断:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=========================================================

 

 

 

 

 

 

 

 

 

 

 

 

 

多态时:

 

1、父类中和子类中有相同变量,则显示父类变量;

 

2、父类中和子类中有相同方法,则执行子类方法;

 

3、如果执行的是父类中的方法(独一无二,子类中没有),则执行父类中的方法;

 

4、如果执行的是子类中的方法(独一无二,父类中没有),则执行报错;

 

 

 

 

 

=========================================================

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

匿名内部类:

 

 

PS:此处没有接口的实现类,省略了一个类的单独定义。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

匿名内部类的注意事项:

 

 

 

 

 

 

 

===============================================================================

 

posted @ 2023-09-17 22:39  小白龙白龙马  阅读(31)  评论(0编辑  收藏  举报