博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新手学JAVA(七)----Override VS Overload
阅读量:7052 次
发布时间:2019-06-28

本文共 1893 字,大约阅读时间需要 6 分钟。

一. Overload


在同一个类中的许多方法可以拥有相同的名字,只要他们的参数声明不同即可,这种方法被称为重载。

举个例子:

public class overload{    '''一个重则输出方法'''    void print(){        System.out.println("Hello!");        }    '''重载上面的输出方法,加上了参数'''    void print(String name)    {        System.out.println(name + ",Hello!");        }    '''重载上面的输出方法,加上两个参数'''    void print(String name,int height){        System.out.println(name +",Hello!你有" + height + "cm高吗?");    }    public static void main(String args[]){        overload ol = new overload();   '''创建一个对象ol'''        ol.print();        ol.print("令仔");        ol.print("令仔",180);        }}

运行结果:

Hello!

令仔,Hello!
令仔,Hello! 你有180cm高吗?

上面的实例中定义了3个同名的方法,但是却有不同的参数类型和参数类型,使用重载其实就是避免繁多的方法名,有些方法的功能是相似的,如果重新建立一个方法,重新取个方法名称,这回让程序段显得不容易阅读。跟之前做系统的时候用到的SQLHelper挺像的。

重载的实质:

  • 方法名相同
  • 参数个数可以不同
  • 参数类型可以不同

当访问一个重载方法时,首先编译器会比较参数类型与实际调用方法中使用值得类型,已选择正确的方法,如果发现没有匹配的方法,则编译器报错。

二. Override


说到覆盖,就要先说说面向对象三大特征之一:继承;在继承的过程中,子类中可以直接使用父类所继承下来的方法,但是当子类中有声明了相同名称的方法的话,调用的则是子类的方法,这就是所谓的覆盖。

看个实例:

public class father{
'''创建方法print()''' void print(){ System.out.println("这是父类特性!"); } public static void main(String args[]){ father f = new father(); son s = new son(); f.print(); s.print(); }}class son extends father{
'''创建子类son继承father''' void print(){ '''覆盖方法print()''' System.out.println("这是子类特性!"); } }

运行结果:

这是父类特性!

这是子类特性!

从上面的这段代码可以看出,子类重新定义类父类的print()方法,子类的覆盖方法与父类相同,知识方法体不一样。

三. 多态性


多态就是拥有多种形态,在Java中,多态主要是指拥有相同的形式,但不同的参数实现不同的功能。

先说说重载:

'''创建一个学生类'''public class student{    student()    '''无参数构造函数'''    {}    student(string name)   '''带一个参数的构造函数'''    {}    student (string name,string code)  '''带两个参数的构造函数'''}

上面的三个例子是3个构造函数的重载函数,具有相同的形态,但是他们根据参数的不同,实现的功能也不同,这就是多态,所以说重载其实具有多态性,或者说,重载是多态的一种形式。

然后再说覆盖,为什么也具有多态性?因为父类的方法在子类中被重写,多态就是拥有多种形态,子类和父类的方法名称相同,只不过完成的功能不一样,所以说覆盖也具有多态性。

可以说重载和覆盖是多态的两种表现形式。

转载地址:http://rqvol.baihongyu.com/

你可能感兴趣的文章
HDU-1045 Fire NetFire Net 最大团
查看>>
Eclipse自动部署项目到Tomcat的webapps下的有效方法
查看>>
Extjs4快速上手三——实现主界面
查看>>
如何替代Flex?
查看>>
控制属性修改时间,控制时间,联合主键
查看>>
android-包签名
查看>>
Android开发和调试必备工具-SDK Tools
查看>>
《微软的软件测试之道》读书笔记 之 结构测试技术
查看>>
ASP.NET中Session的个人浅谈
查看>>
Ubuntu离线安装Sogou拼音(附老版本安装&输入法自启动)
查看>>
AS3学习笔记(三)XML解析
查看>>
cisco asa 5520 8.4 (二) -- 动态nat
查看>>
java.io.NotSerializableException
查看>>
php中instanceof的作用
查看>>
启用客服qq的方法
查看>>
Mac OS X Lion 10.7.3 发布
查看>>
Freiburg这么做太愚蠢了
查看>>
Vue+Vue Router+Axios+Webpack+Flask+MySQL实现简单的注册、登录验证功能
查看>>
Spring Cache
查看>>
基于Nginx和Memcache的负载均衡集群架构设计
查看>>