导航:首页 > 源码编译 > 有关方法重载可以编译正确的是

有关方法重载可以编译正确的是

发布时间:2022-10-09 07:00:34

‘壹’ 方法的重载只能发生在同一个类下

答案为B
A:java不支持运算符重载
C:参数类型都为List且参数个数一致,不是重载,编译时会报错
D:方法的重载与返回值无关

‘贰’ 给定如下java代码,下列()方法可以加入到Sample类中,并且能够编译正确的是(选2项) 求解!

A是错的,java中不允许函数名相同、参数个数和类型相同仅返回值类型不同
B对

C对,返回2没问题,会自动转换。

D是错的,一是返回类型为int,但函数体无返回数据,2是参数一没写变量名

‘叁’ 下面的方法重载,正确的是( )。要详细解释

正确的是C;
函数重载的要求是函数的参数类型或者个数不同,与返回值类型无关。
A仅是返回值类型不同,舍之。
B参数完全相同,D也是,皆舍去。
C的参数个数不一样,故选C

‘肆’ java编程问题,方法重载(overloading)必须满足

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。

所以方法重载的要素

  1. 方法名相同

  2. 参数列表不同

  3. 在同一个类中

  4. 和返回值类型无关

    所以此题选择B,C,E

‘伍’ java 构造方法重载

方法重载:

1.必须在同一个类

2.方法名相同

3.方法参数个数或参数类型(或参数顺序)不同


注:

1.参数顺序指的是参数类型顺序,与参数名字无关,比如show(int a,,Stringa,int c)和show(int c,String b,int a)是一样的方法,非方法重载,因为他们的参数类型顺序一样是int,String,int


2.方法重载与访问权限修饰符和方法返回值无关


调用:


1.当调用的时候,填好方法参数时,它会自动判断参数类型,参数类型顺序,个数,然后再调用相应的重载 方法,当匹配不到相应的重载方法,那么直接编译错误


例子:


方法1. show()

方法2. show(int a,int b)

方法3. show(int a,String b)

方法4. show(String b,int a)

方法5. show(int b,int a)


1. 方法1.2.3.4是重载方法(1与[234]参数个数不同,2与[34]参数类型不同,3与[4]参数类型顺序不同)

2. 方法1.3.4.5是重载方法(1与[534]参数个数不同,5与[34]参数类型不同,3与[4]参数类型顺序不同)

3. 方法2和5非方法重载,因为参数类型顺序一样,跟参数名字无关

4. 以方法1.2.3.4为例,show()会调用方法1,show(1,1)会调用方法2,show(1,"1")会调用方法3

show("1",1)会调用方法4



----------------------------------------------------------------------------------------------------------------

  1. 你两个方法名分别是test1,test2,方法名不同,肯定不是方法重载,而且构造方法名必须跟类名一样,不可能出现不同名的构造方法


2.假如test(int i,String s){} test(String s,int i){}

那么这2个构造方法是重载,不会出现编译错误,因为参数类型顺序不同,第一个构造方法参数类型顺序是int,String,第二个构造方法参数类型顺序是String,int

‘陆’ 什么是方法重载方法重载的规则是什么

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。

一、方法名一定要相同。

二、方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。

1、如果参数个数不同,就不管它的参数类型了!

2、如果参数个数相同,那么参数的类型必须不同。

三、方法的返回类型、修饰符可以相同,也可不同。



(6)有关方法重载可以编译正确的是扩展阅读:

Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。

调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法。

‘柒’ 重载的编程语言中的重载

编程中重载的定义:函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同。
重载是可使函数、运算符等处理不同类型数据或接受不同个数的参数的一种方法,关于重载一词在词义上有两种不同的说法: 重载是一种多态(如C++,Java),有四种形式的多态:
1.虚函数多态
2模板多态
3重载
4转换
所谓的动态和静态区分是另一种基于绑定时间的多态分类,严格来说,重载是编译时多态,即静态多态,根据不同类型函数编译时会产生不同的名字如int_foo和char_foo等等,以此来区别调用。故重载仍符合多态定义——通过单一标识支持不同特定行为的能力,只是重载属于静态多态,而不是通过继承和虚函数实现的动态多态。 重载(overloaded)和多态无关,真正和多态相关的是覆盖(inheritance)。
当派生类重新定义了基类的虚拟方法后,基类根据赋给它的不同的派生类引用,动态地调用属于派生类的对应方法,这样的方法调用在编译期间是无法确定的。因此,这样的方法地址是在运行期绑定的(动态绑定)。
重载只是一种语言特性,是一种语法规则,与多态无关,与面向对象也无关。
不过针对所谓的第二种重载,有一个专门的名词--重写或重定义。重载与重写的区别就在于是否覆盖,重写一般多发生在不同的类且存在继承关系之间,而重载多是在一个类里或者一块代码段里。
特点:
由于重载可以在同一个类中定义功能类似的函数,这给程序员管理类的相似函数提供了极大的方便。例如,在一个定义圆的类中,需要设定圆心和半径来确定一个圆对象,程序员不需要设定setRadius(float r)和SetPoint(float x,float y)两个不同名函数,而只需要设定一个CSetCicle函数名就够了。在这个简单的例子中重载并没有明显的优势,可是当一个类中相似功能函数有几十、上百个的时候,重载的优势就显现出来了,这时程序员不需要去记这么繁多的函数名,可以把更多的精力放在程序本身上。重载的方法只属于子类。
函数:
1.函数名必须相同,返回值可以相同,也可以不同,但是特征标必须不同。是函数名来确定函数的不同,是特征标是函数可以重载。编译器首先选在函数名,然后再根据特征标在众多重载的函数中找到合适的。
2.匹配函数时,编译器将不区分类型引用和类型本身,也不区分const和非const变量。(小注:因为这些在定义和声明时可能不同,但是在调用时都是一样的,编译器将无法区分)。但是值得注意的是,形参与const形参的等价性仅适于非引用形参。有const引用形参的函数与有非const引用形参的函数是不同的。类似的,如果函数带有指向const类型的指针形参,则与带有指向相同类型的非const对象的指针形参的函数不相同。
3.名称修饰(name decoration)。编译器将根据原型中指定的形参对每个函数名进行加密
重定义:
被重载的函数有不同版本,这些函数地位是一样的,可以根据特征标的不同选择不同的函数。被重定义的函数也有不同的版本,但是你不能随意选择,你只能选择最新的版本,被重定义多发生在类之间的继承里。
4.函数会有那么多版本,那么编译将选哪一个呢。当然,理想情况是,实参与形参的数据类型完全匹配,但是当不完全匹配时会怎样呢?这就要牵扯到c++里复杂的类型转换了。
在重载及函数模板重载里,编译器选择函数,要经过以下三步,这个过程称为重载解析。
第一步:创建候选函数列表,其中包含有与被调函数名称相同的函数与模板函数。
第二步:使用候选函数列表创建可行函数列表。这些都是参数数目正确的函数。
第三步:确定是否有最佳可行的函数。如果有,则使用。
确定最佳函数,只考虑其特征标,而不考虑返回类型(也无从考虑,但是要是硬想办法的话,也有,不过没有必要为了不必要的性能而浪费资源)。确定最佳函数,匹配特征标要依次经过以下判断:(1)完全匹配(常规函数优于模板;允许无关紧要的转换)(2)提升匹配(如char和short自动转换为int)(3)标准转换(int转换为char,long转换为double)(4)用户自定义的转换(如类声明中定义的转换函数)。
完全允许无关紧要的转换,这些转换包括引用,指针与实体之间,数组与指针之间,函数与函数指针之间,const与非const等等。
其次还要注意匹配的优先级。1,指向非const数据的指针和引用优先于const的指针和引用参数匹配(这种优先级只有当指针或引用出现时产生)。2,非模板函数,优于模板函数,显示具体化的模板将优于隐式具体化的模板,总之较具体的优先(注意,具体并不是由于显隐决定的,术语“最具体”是指编译器推断使用哪种类型时执行的转换最少)。 通常,派生类继承基类的方法,因此,在调用对象继承方法的时候,调用和执行的是基类的实现.但是,有时需要对派生类中的继承方法有不同的实现.
例如,假设动物类存在跑的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要重新编写基类中的方法.
重写基类方法就是修改它的实现或者说在派生类中重新编写 //java代码//方法重写publicclassFather{publicvoidovel(inti){/*dosomething...*/}publicStringovef(){/*dosomething...*/return***;}}publicclassSonextendsFather{publicvoidovel(inti){/*doothersomething...*/}publicStringovef(){/*doothersomething...*/returnXXX;}}

阅读全文

与有关方法重载可以编译正确的是相关的资料

热点内容
安阳少儿编程市场 浏览:496
云服务器建设原理 浏览:258
javajunit4for 浏览:845
华为服务器如何进阵列卡配置 浏览:435
apache服务器ip地址访问 浏览:718
如何买到安卓手机预装软件 浏览:537
冤罪百度云不要压缩 浏览:87
苏州云存储服务器 浏览:175
解压收纳原声 浏览:386
java注册验证 浏览:375
火花app怎么上推荐 浏览:981
什么app能游戏投屏到电视上 浏览:455
服务器托管到云端是什么意思 浏览:836
app保存草稿怎么用 浏览:808
安卓如何进入proumb 浏览:144
主机虚拟云服务器 浏览:619
删除分区加密的空间会不会恢复 浏览:706
京东app客户上门怎么看搜索量 浏览:741
怎么在农行app购买黄金 浏览:46
c型开发板和单片机 浏览:146