Tag: 重载

Java方法重载

我仍然是核心java的学习者。 我想在这里理解多态性概念。 我理解了压倒一切,并对重载有疑问。 为什么我们将它称为方法重载虽然我们调用不同的方法(我的意思是只有参数不同。)。 我只是觉得调用编译时绑定的不同方法非常简单,只是区别在于我有相同的方法名称。 Class A { method A(int i){} method A(int i, int B){} } 请分享您的意见。 问Punith

当我们将int参数传递给重载方法时会发生什么,其中float作为一个方法的参数而另一个方法具有双重参数

在重载概念,我有一个疑问,那就是。 当我使用int值重载方法时,方法调用的是float参数方法,而不是double参数方法。 void method1(float f){ System.out.println(‘float’); } void method1(double f){ System.out.println(‘double’); } 方法调用: method1(10); 输出:浮动 如此链接中的java教程中所述,如果浮点文字以字母F或f结尾,则浮点文字的类型为float; 否则它的类型是双倍的,它可以选择以字母D或d结尾。 对于上面的情况,方法调用应该调用double参数方法。 但是它调用了float参数方法。 如何在这个区域发生超载过程?

重载和重载方法中的多态性

我们来看看这个简单的Java代码: public class Animal { public void eat() { System.out.println(“Generic Animal Eating Generically”); } } public class Horse extends Animal { public void eat() { System.out.println(“Horse eating hay “); } public void eat(String s) { System.out.println(“Horse eating ” + s); } } 我试图找出三个eat()方法的哪个版本将运行。 现在,当我打字 Animal a = new Animal(); a.eat(); 输出是“Generic Animal Eating Generically”,这是完全可以理解的。 输入时会发生同样的事情: […]

这是一个众所周知的设计模式吗? 它叫什么名字?

我经常在代码中看到这个,但是当我谈到它时,我不知道这种’模式’的名称 我有一个带有2个参数的方法,它调用一个有3个参数的重载方法,并故意将第3个参数设置为空字符串。 public void DoWork(string name, string phoneNumber) { DoWork(name, phoneNumber, string.Empty) } private void DoWork(string name, string phoneNumber, string emailAddress) { //do the work } 我这样做的原因是不重复代码,并允许现有的调用者仍然调用只有2个参数的方法。 这是一种模式,它有一个名字吗?

Java中的函数覆盖 – 重载

覆盖和重载有什么区别?

具有通用重载的Java擦除(不覆盖)

我的域名中有FinanceRequests和CommisionTransactions。 如果我有一个FinanceRequests列表,每个FinanceRequest可能包含多个需要回收的CommisionTransactions。 不要担心这是怎么做到的。 下面的课程(非常底部)让我觉得自己的模糊和温暖,因为它很好地重用了现有的代码。 一个问题类型擦除。 public void clawBack(Collection financeRequestList) public void clawBack(Collection commissionTrnsList) 它们在擦除后都具有相同的签名,即: Collection –> Collection Collection –> Collection 所以eclipse抱怨说: 方法clawBack(Collection)具有与CommissionFacade类型中的另一种方法相同的擦除clawBack(Collection) 有没有重构这个的建议,以便它仍然是一个优秀的解决方案,可以很好地重用代码? public class CommissionFacade { /********FINANCE REQUESTS****************/ public void clawBack(FinanceRequest financeRequest) { Collection commTrnsList = financeRequest.getCommissionTrnsList(); this.clawBack(commTrnsList); } public void clawBack(Collection financeRequestList) { for(FinanceRequest finReq : financeRequestList) { this.clawBack(finReq); } } /********COMMISSION TRANSACTIOS****************/ […]

在Java中重载和多次调度

我有一个集合(或列表或数组列表),我想在其中放置String值和double值。 我决定使它成为对象的集合并使用重载ond多态,但我做错了。 我做了一点测试: public class OOP { void prova(Object o){ System.out.println(“object”); } void prova(Integer i){ System.out.println(“integer”); } void prova(String s){ System.out.println(“string”); } void test(){ Object o = new String(” “); this.prova(o); // Prints ‘object’!!! Why?!?!? } public static void main(String[] args) { OOP oop = new OOP(); oop.test(); // Prints ‘object’!!! Why?!?!? } } 在测试中,似乎参数类型是在编译时决定的,而不是在运行时决定的。 […]

重载是编译时多态。 真?

我知道覆盖和重载之间的语法差异。 我也知道覆盖是运行时多态,重载是编译时多态。 但我的问题是:“重载是否真的是编译时多态?方法调用是否真的在编译时求解?”。 为了澄清我的观点,让我们考虑一个示例类。 public class Greeter { public void greetMe() { System.out.println(“Hello”); } public void greetMe(String name) { System.out.println(“Hello ” + name); } public void wishLuck() { System.out.println(“Good Luck”); } } 由于所有方法greetMe(), greetMe(String name), wishLuck()都是公共的,它们都可以被覆盖(包括重载的),对吧? 例如, public class FancyGreeter extends Greeter { public void greetMe() { System.out.println(“***********”); System.out.println(“* Hello *”); System.out.println(“***********”); } } 现在,请考虑以下代码段: […]

在Java中重写equals时,为什么使用Object以外的参数不起作用?

我最近遇到了一个有趣的行为。 似乎如果我重写.equals()来获取除Object之外的参数,它就不会被调用。 任何人都可以向我解释为什么会这样吗? 这似乎违反了我对OOP中多态性的理解,但也许我错过了一些东西。 这里有更简单的代码,显示了我所看到的内容: public class MyClass { private int x; public MyClass(int n) { x = n; } public boolean equals(Object o) { return false; } public boolean equals(MyClass mc) { return x == mc.x; } public static void main(String[] args) { List list = new ArrayList(); list.add(new MyClass(3)); System.out.println(“Contains 3? ” + […]

在java中覆盖具有不同返回类型的方法?

我读过一本书,它说我可以覆盖一个方法,如果它有相同的签名。 根据书中方法的签名是Method_Name + Parameters传递。 根据本书,我可以覆盖具有不同返回类型的方法。 实际上是否可以在Java中覆盖具有不同返回类型的方法? 因为我在网上做了一些搜索,我发现人们说要覆盖一个方法,返回类型也应该是相同的。 根据该书,它还说当我们尝试使用相同的方法名称和参数但不同的返回类型重载方法时,java将抛出编译错误,因为签名仅表示方法名称和参数。 如果这是真的,我们应该能够覆盖具有不同返回类型的方法。 请帮我理解这个。 提前致谢。