zoukankan      html  css  js  c++  java
  • java的重写、重载、覆盖的差别

    多态性 
    通过继承,一个类能够用作多种类型:能够用作它自己的类型、不论什么基类型,或者在实现接口时用作不论什么接口类型。这称为多态性 

    重载 
    每一个类型成员都有一个唯一的签名。方法签名由方法名称和一个參数列表(方法的參数的顺序和类型)组成。

    仅仅要签名不同。就能够在一种类型内定义具有同样名称的多种方法。

    当定义两种或多种具有同样名称的方法时,就称作重载。

    即重载时同样名称成员的參数列表是不同样的(參数顺序和类型)。 

    继承,重写和隐藏成员 (重写 = 覆盖)
    派生的类型继承其基本类型的全部成员;也就是说。这些成员是在派生类型之上定义的,并可用于派生类型。继承成员的行为和质量能够通过下面两种方式来改动: 

    1、派生类型可通过使用同样的签名定义一个新成员。从而隐藏继承的成员。将先前的公共成员变成私有成员。或者为标记为 final 的继承方法定义新行为时,能够採取这样的方法。 

    2、派生类型能够重写继承的虚方法。

    重写方法提供了对方法的一种新定义。将依据执行时的值的类型。而不是编译时已知的变量类型来调用方法。仅仅有当虚方法没有标记为 final 且新方法至少能够像虚方法一样进行訪问的情况下,成员才干重写虚方法。 
    方法名,參数同样形成重写,重写的方法不能减少原方法的"可见度",也不能改变原方法的返回值类型。 

    方法名同样,參数不同(个数、类型)形成重载,重载的方法可看成一个全新的方法。与原方法相比它能够有不同的"可见度"和“返回值类型”。例如以下例: 

    class A { 
    protected int method1(int a, int b) { return 0; } 

    public class B extends A{ 
    public int method1(int a, int b) { return 0; } //正确,重写父类方法,能够扩大訪问权限 
    //private int method1(int a, int b) { return 0; } //错误,重写父类方法,不能减少了訪问权限 
    //private long method1(int a, int b) { return 0; } //错误。重写父类方法。不能改变返回值类型 
    public short method1(int a, long b) { return 0; }//正确,重载自身的方法。能够有不同的訪问权限和返回值类型 
    private int method1(int a, long b) { return 0; }//正确,重载自身的方法,能够有不同的訪问权限和返回值类型 


    但这里 方法public short method1(int a, long b) { return 0; }和 方法private int method1(int a, long b) { return 0; }不能同一时候存在,由于在同一类中。不同意存在同样名字和參数类型的方法(重写的方法)。

  • 相关阅读:
    贝叶斯分类
    K-Means算法
    python数组
    深度学习与神经网络
    数据挖掘算法之-关联规则挖掘(Association Rule)
    k8s记录-pip源配置
    k8s记录-yum本地仓库部署
    k8s记录-不同集群服务互联
    k8s记录-kube-dns(core-dns)配置(七)
    k8s记录-kubectl常用
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5345921.html
Copyright © 2011-2022 走看看