方法重载

Java之重载(Overload)与重写(Overwrite)总结

我们两清 提交于 2020-02-29 08:42:39
内容来源为:《孙卫琴面向对象编程》,本随笔简单总结,具体内容可参见概述第6章,写的挺清晰; 一. 重载(Overload)   1. 有时候类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数( 如构造函数就是一种例子 );   2. 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一样,那么可以说,一个方法是另一个方法的重载方法。   3. 重载方法必须满足以下条件 :     (1)方法名相同;    (2)方法的参数类型、个数、顺序至少有一项不同;    (3)方法的返回值类型可以不同;    (4)方法的修饰符可以不同;   4. 在一个类中不允许定义两个方法名相同,并且参数签名也完全相同的方法。因为假如存在这样的方法,Java虚拟机在运行时就无法决定到底执行哪个方法,参数签名是指参数的    类型、个数和顺序。 二. 重写(OverWrite)   1. 如果在子类中定义的一个方法,其名称、返回值类型及参数签名正好与父类中的某个方法的名称,返回值类型及参数名相匹配,那么可以说,子类的方法重写了(覆盖)父类的方法;   2. 重写方法必须满足以下约束条件:     (1)子类的方法的名称、参数签名和返回值类型必须与父类方法的名称、参数签名及返回值类型一致;     (2)子类在重写父类方法时

DaY07方法重写与重载的区别 面试题

亡梦爱人 提交于 2020-02-27 14:21:56
方法重写的面试题 * Override和Overload的区别?Overload能改变返回值类型吗? * overload可以改变返回值类型,只看参数列表 * 方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的 * 方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。 * 子类对象调用方法的时候: * 先找子类本身,再找父类。 来源: oschina 链接: https://my.oschina.net/u/4258973/blog/3161464

Java 重写(Override)与重载(Overload)

本小妞迷上赌 提交于 2020-02-27 12:50:19
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。 在面向对象原则里,重写意味着可以重写任何现有方法。实例如下: TestDog.java 文件代码: class Animal { public void move ( ) { System . out . println ( " 动物可以移动 " ) ; } } class Dog extends Animal { public void move ( ) { System . out . println ( " 狗可以跑和走 " ) ; } } public class TestDog { public static void main ( String args [ ] ) { Animal a = new Animal ( ) ; // Animal

方法的重载

耗尽温柔 提交于 2020-02-26 14:04:35
方法的重载 有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载. 1、 重载要解决的问题 代码示例 class Test { public static void main(String[] args) { int a = 10; int b = 20; int ret = add(a, b); System.out.println("ret = " + ret); double a2 = 10.5; double b2 = 20.5; double ret2 = add(a2, b2); System.out.println("ret2 = " + ret2); } public static int add(int x, int y) { return x + y; } } // 编译出错 Test.java:13: 错误: 不兼容的类型: 从double转换到int可能会有损失 double ret2 = add(a2, b2); ^ 由于参数类型不匹配, 所以不能直接使用现有的 add 方法. public class Test1{ public static int add(int x,int y) { return x+y; } public static double add(double x,double y) { return x+y;

重载与覆盖有什么区别?

旧街凉风 提交于 2020-02-26 04:11:44
1.定义区别: ①重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。 ②覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。 2.类的关系区别 覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。 3.产生方法区别 覆盖只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系。 来源: 51CTO 作者: gzkhrh 链接: https://blog.51cto.com/gzkhrh/2468876

C++细节注意点

痴心易碎 提交于 2020-02-25 15:44:44
文章目录 实现和声明的分离 不使用 using namespace std; C++对C语言的增强 重点1 引用 引用的注意事项 引用的本质 指针引用 常量型引用 成员函数调用const修饰对象实例 构造和析构函数实例 拷贝构造函数 拷贝构造函数的调用时机 深拷贝浅拷贝 深拷贝 初始化列表 类对象作为类成员的案例 explicit 关键字 new动态对象创建 完美代替malloc 静态成员变量 静态成员函数 单例模式 成员变量和成员属性分开处理 this指针 this指针的使用 空指针访问成员的函数 常函数和常对象 全局函数做友元函数 整个类做友元类 让成员函数做友元函数 自定义数组实例 运算符重载 二元重载 左移右移的重载的注意点 属性私有后 要使用友元来进行重载 前置后置递增运算符 指针运算符重载(自定义一个智能指针) 赋值运算符重载 [] 运算符的重载 关系运算符重载 函数调用运算符重载 不要重载||和&& 自定义string类 继承 继承方式 继承中的对象模型 继承中的构造和析构顺序 继承中同名成员的处理 继承中静态成员的处理 多继承 菱形继承 解决二义性的方法 虚继承工作原理 多态 静态编联和动态编联 多态原理解析 多态案例1 计算器 抽象类和纯虚基类 虚析构和纯虚析构函数 向上类型转换向下类型转换 游戏多态实例 模板 排序实例 普通函数和函数模板的区别 模板机制内部原理

JAVA面试宝典-基础篇(二)

爱⌒轻易说出口 提交于 2020-02-25 11:09:01
11 、 "==" 和 equals 方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用 == 操作符。 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如 Objet obj = new Object(); 变量 obj 是一个内存, new Object() 是另一个内存,此时,变量 obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用 == 操作符进行比较。 equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码: String a=new String("foo"); String b=new String("foo"); 两条 new 语句创建了两个对象,然后用 a,b 这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即 a 和 b

Java中重载(overload)和重写(override)的区别

本小妞迷上赌 提交于 2020-02-24 05:03:43
Java中重载(overload)和重写(override)的区别 重载(overload):重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。 重写(override)在子类中定义一个与父类同名、返回类型、参数类型均相同一个方法,称为方法的覆盖。 覆盖发生在子类与父类之间。通常应用于多态中。 首先我们来讲讲: 一、重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时 存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具 有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型 来决定具体使用哪个方法, 这就是多态性。 (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同 也可以不相同。无法以返回型别作为重载函数的区分标准。 下面是重载的例子: package c04.answer;//这是包名 //这是这个程序的第一种编程方法,在main方法中先创建一个Dog类实例,然后在Dog类的构造方法中利用this关键字调用不同的bark方法。不同的重载方法bark是根据其参数类型的不同而区分的。 //注意:除构造器以外

重载和重写的区别

吃可爱长大的小学妹 提交于 2020-02-24 05:03:30
重载和重写的区别 1、重载(Overloading) (1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时 存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。 (2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具 有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型 来决定具体使用哪个方法, 这就是多态性。 (3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同 也可以不相同。无法以返回型别作为重载函数的区分标准。 下面是重载的例子: package c04.answer;//这是包名 //这是这个程序的第一种编程方法,在main方法中先创建一个Dog类实例,然后在Dog 类的构造方法中利用this关键字调用不同的bark方法。不同的重载方法bark是根据其参 数类型的不同而区分的。 //注意:除构造器以外,编译器禁止在其他任何地方中调用构造器。 package c04.answer; public class Dog { Dog() { this.bark(); } void bark()//bark()方法是重载方法 { System.out.println("no barking!"); this.bark("female", 3.4); }

MSDN上的重载运算符操作

大憨熊 提交于 2020-02-23 16:00:40
再读MSDN的重载运算符 MSDN 就是微软开发的官方指南了,里面都是对开发中应用到的基本知识作很精辟的讲解,这一篇读读可重载的运算符。 C# 允许用户定义的类型通过使用 operator 关键字定义静态成员函数来重载运算符。但不是所有的运算符都可被重载,下表列出了不能被重载的运算符: 运算符 可重载性 + 、 - 、 ! 、 ~ 、 ++ 、 -- 、 true 和 false 可以重载这些一元运算符。 + , - , * , / , % , & , | , ^ , << , >> 可以重载这些二进制运算符。 == , != , < , > , <= , >= 比较运算符可以重载(但请参见本表后面的说明)。 && , || 条件逻辑运算符不能重载,但可使用能够重载的 & 和 | 进行计算。 [] 不能重载数组索引运算符,但可定义索引器。 () 不能重载转换运算符,但可定义新的转换运算符(请参见 explicit 和 implicit )。 += , -= , *= , /= , %= , &= , |= , ^= , <<= , >>= 赋值运算符不能重载,但 += 可使用 + 计算,等等。 = 、 . 、 ?: 、 -> 、 new 、 is 、 sizeof 和 typeof 不能重载这些运算符。 注意 比较运算符(如果重载)必须成对重载;也就是说,如果重载 ==,也必须重载