Java学习3之成员方法及函数重载
方法的定义:方法名称,返回值,参数列表,修饰符(权限修饰符,final,static),实现体。
参考自:《Java 程序设计与工程实践》
方法的签名:
唯一区别其他方法的元素:(1)方法名称;(2)参数类型列表(参数顺序和类型)。这就是方法的签名。
方法的签名不包括方法的返回值。虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。
example:(1)public void on(){}
public int on(){};这样两个方法编译器依然认为是相同的方法,不可以同时定义在一个类中。
(2)pubic void on(){}
private void on(){};方法的修饰符不同,但编译器认为是相同的方法,不可以定义在同一个类中。
(3)public void on(int a,int b){}
public void on(int b,int a){};仅仅是参数名称不同。
重载:
一个类中相同方法名但参数类型列表不同的方法,即可称为重载。
example:public class Light{
public void on(){}
public void on(int color){}
}
重载技术实际上更多是因为抽象和描述问题的需要存在的。如果都是开灯,但是仅仅是因为具体细节不同,而要申明多个不同名称的函数,这样整个代码的可读性就变差了。
example:
常用在控制台中打印符号的System.out.println()打印函数。它有多种重载。
public void println();
public void println(boolean x);
public void println(char x);等等。
example:
构造函数使用重载函数,它可能是产生重载技术的原因。
public class Light{
public Light(){}
public Light(int color){}
public static void main(String[] args){
Light light = new Light();
Light light = new Light(10);}
}
new对象的时候,后面必须是类的名称,再后面的括号表示调用构造函数,函数的参数类型列表唯一区分了调用的构造函数。
函数重载的设计问题:
重载不用刻意使用,在设计和编程过程中自然而然就会想到根据功能定义行为的名称,相同功能的行为自然就定义相同的函数名称。
example:
功能类似,函数接受的参数也相同。
public void on(int color);
public void on(int wattage);
在函数签名上看似相同,但编译器无法区分这两个函数,出现编译错误。
解决:将其中一个函数改名;
Java学习3之成员方法及函数重载的更多相关文章
- C++学习笔记22,普通函数重载(1)
转载请注明出处:http://blog.csdn.net/qq844352155/article/details/31353325 该博文仅用于交流学习,请慎用于不论什么商业用途,本博主保留对该博文的 ...
- C++ 11 学习3:显示虚函数重载(override)
5.显示虚函数重载 在 C++ 里,在子类中容易意外的重载虚函数.举例来说: struct Base { virtual void some_func(); }; struct Derived : B ...
- JS学习 用 arguments 对象模拟函数重载
用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载: function doAdd() { if(arguments.length == 1) { alert(arguments[ ...
- Java学习笔记17---成员方法的重载与重写
重载是指,一个类中定义了一个成员方法后,通过修改参数个数.参数类型或参数顺序,重新实现该方法,则这两个方法互为对方的重载方法. 重写是指,子类重新实现父类的成员方法. 重载后的方法,与原方法相比: ( ...
- 【原】Java学习笔记008 - 方法(函数)
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 方法/函数 Met ...
- JAVA学习(七):方法重载与方法重写、thiskeyword和superkeyword
方法重载与方法重写.thiskeyword和superkeyword 1.方法重载 重载可以使具有同样名称但不同数目和类型參数的类传递给方法. 注: 一是重载方法的參数列表必须与被重载的方法不同,而且 ...
- 疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写
一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同 ...
- java学习笔记(2)——函数
int a = 1; a = a++; 1,取出a的值1作为a++表达式的值(a++表达式等于1) 2,a增加1变为2 3,执行赋值运算,a++表达式的值再赋给a,a又成为了1. ---------- ...
- 4.C++中的函数重载,C++调用C代码,new/delete关键字,namespace(命名空间)
本章主要内容: 1)函数重载 2)C++调用C代码 3)new/delete关键字实现动态内存分配 4)namespace命名空间 大家都知道,在生活中,动词和不同的名词搭配一起,意义都会大有不同,比 ...
随机推荐
- 可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的构造函数: 无法解析参数'eWorld.WCFBLL.ImageArchive.IDocumentOperation
可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activato ...
- hdu-1179 Ollivanders: Makers of Fine Wands since 382 BC.---二分图匹配模板
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1179 题目大意: 有n个人要去买魔杖,有m根魔杖(和哈利波特去买魔杖的时候一样,是由魔杖选人).接下 ...
- 【BZOJ2730】[HNOI2012] 矿场搭建(找割点)
点此看题面 大致题意: 一张无向图,要求你在去掉任意一个节点之后,剩余的每个节点都能到达一个救援出口,问至少需要几个救援出口. 第一步:\(Tarjan\)求割点 首先,我们要跑一遍\(Tarjan\ ...
- 更换PostgreSql的data文件夹并重新服务器(此方法同样适用于系统崩溃后,找回数据的操作)
*如果是系统崩溃,需要找回数据,PostgreSQL安装目录的data文件夹要存在 1.备份PostgreSQL安装目录到其他目录下 2.停止Postgres服务,可以在运行中输入services.m ...
- ipynb-->pdf
ipython nbconvert notebookname.ipynb --to latex --post pdf
- 零基础快速入门SpringBoot2.0教程 (二)
一.SpringBoot2.x使用Dev-tool热部署 简介:介绍什么是热部署,使用springboot结合dev-tool工具,快速加载启动应用 官方地址:https://docs.spring. ...
- 第26题:LeetCode572:Subtree of Another Tree另一个树的子树
题目描述 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 1: ...
- SpingBoot之多Profile文件
1.我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用application.properties的配置: 在我们的项目开发.测 ...
- oracle常用运维sql语句
1.查询dblink语句 col owner for a20col db_link for a30col username for a20col host for a30set linesize 12 ...
- 认识mysql(2)
1.表字段的操作 1.语法 :alter table 表名 执行动作; 2.添加字段(add) alter table 表名 add 字段名 数据类型; alter table 表名 add 字段名 ...