Tag: 方法重载

使用java中的抽象类重载方法重载

abstract class Cell { public abstract Q getValue(); // abstract method } class Cell1 extends Cell { public Integer getValue() {// abstract method implementation return 0; } } class Cell2 extends Cell { public String getValue() { // abstract method implementation return “razeel”; } } class test { public static void main(String[] a) { Cell […]

相互之间是静态和非静态的重载

这两个function是否过载 class yogi{ public static void fun(){ System.out.println(“Fun”); } public void fun(int a,int b){ System.out.println(“int”); } }

JVM如何在函数重载的情况下找到要调用的方法(具有最接近匹配的参数)

JVM决定在编译时调用哪个重载方法。 我有一个例子: public class MainClass{ public static void go(Long n) {System.out.println(“takes Long “);} public static void go(Short n) {System.out.println(“takes Short “);} public static void go(int n) {System.out.println(“takes int “);} public static void main(String [] args) { short y = 6; long z = 7; go(y); go(z); go((Short)y); } } 根据我的理解,它应该打印以下内容: takes Short takes Long takes […]

java方法重载inheritance和多态

这是我遇到的一个测试练习题,非常感谢您帮助我理解这些概念 让Hawk成为Bird的子类。 假设某些类有两个重载方法void foo(Hawk h)和void foo(Bird b)。 在声明Bird x = new Hawk()之后,将在调用foo(x)中执行哪个版本; 这是我到目前为止的代码,有人可以向我解释为什么foo(鸟b)被执行? public class MPractice { public static void main(String args[]) { Bird x = new Hawk(); Third y = new Third(); y.foo(x); } } public class Third { void foo(Hawk h) { System.out.println(“Hawk”); } void foo(Bird b) { System.out.println(“Bird”); } }

产品方法重载

所以我在CodeHS上处理这个问题,然后我被困了这么久,于是决定在这里问。 练习是使产品方法超载,以允许将其他类型的值相乘: 两个双打 一个int和一个double 一个double和一个int 三个整数 三个双打 public class Product extends ConsoleProgram { public void run() { int intValue = 5; double doubleValue = 2.5; int product1 = product(intValue, intValue); System.out.println(product1); // Use method overloading to define methods // for each of the following method calls double product2 = product(doubleValue, doubleValue); System.out.println(product2); int product3 = […]

Java方法调度如何与generics和抽象类一起使用?

我遇到了今天Java没有调用我预期的方法的情况 – 这是最小的测试用例:(对不起,这似乎是人为的 – ‘现实世界’场景要复杂得多,而且更有意义从“为什么你会这样做?”的立场。) 我特别感兴趣的是为什么会这样,我不关心重新设计的建议。 我有一种感觉,这是在Java Puzzlers,但我没有我的副本方便。 请参阅以下Test .getValue()中的具体问题: public class Ol2 { public static void main(String[] args) { Test t = new Test() { protected Integer value() { return 5; } }; System.out.println(t.getValue()); } } abstract class Test { protected abstract T value(); public String getValue() { // Why does this always invoke […]

使用null的方法重载选择

鉴于此代码: class Overloading extends Object { static public void target(Object val, String chk) { System.out.println(“Object[“+val+”] :: Should be “+chk); } static public void target(String val, String chk) { System.out.println(“String[“+val+”] :: Should be “+chk); } static public void main(String[] args) { Object obj=null; target(null ,”Object”); target((Object)null,”Object”); target(obj ,”Object”); } } 输出(意外)如下: String[null] :: Should be Object […]

Java重载方法选择

我试图了解Java如何选择执行哪种方法: //Example 1 prints Square:add(Figure) Figure fs = new Square(); fs.add(fs); //Example 2 prints Square:add(Figure) Rectangle rs = new Square(); rs.add(fs); //Example 3 prints Rectangle:add(Rectangle). Expected Square:add(Square) rs.add(new Square()); //Example 4 prints Rectangle:add(Rectangle). Expected Square:add(Figure) Square ss = new Square(); ss.add(rs); class Figure { public void add(Figure f){ System.out.println(“Figure:add(Figure)”); } } class Rectangle extends Figure […]

如何在Clojure中调用重载的Java方法

对于此示例Java类: package foo; public class TestInterop { public String test(int i) { return “Test(int)”; } public String test(Object i) { return “Test(Object)”; } } 当我启动Clojure并尝试调用test(int)方法时,将调用test(Object)方法,因为Clojure会自动将整数写入java.lang.Integer对象。 如何强制Clojure调用test(int)方法? user=> (.test (new foo.TestInterop) 10) “Test(Object)” 我想在AWT中调用Component.add(Component comp, int index)的方法,而是继续调用add(Component comp, Object constraints) ,因此工具栏上的按钮总是以错误的顺序出现。

java中的重载方法优先级

我知道这个问题多次讨论过,但我还是不明白。 研究这段代码: public class Main { public static void var(Integer x, int y) { System.out.println(“Integer int”); } public static void var(int… x) { System.out.println(“int… x”); } public static void var(Integer… x) { System.out.println(“Integer…”); } public static void main(String… args) { byte i = 0; Integer i2 = 127; var(i, i2); } } 在我的大脑遵循规则: 加宽 拳击 […]