0
abstract class Cell<Q> {
           public abstract Q getValue(); // abstract method
        }
        class Cell1 extends Cell<Integer> {
            public Integer getValue() {// abstract method implementation
                return 0;
            }
        }
        class Cell2 extends Cell<String> {
            public String getValue() {  // abstract method implementation
                return "razeel";
            }
        }
        class test
        {
        public static void main(String[] a)
            {
                Cell obj=new Cell1();
            int ab=(Integer) obj.getValue();  
            Cell objs=new Cell2();
            String str=objs.getValue().toString();
            System.out.println("ab=================== "+ab);
            System.out.println("String=================== "+str);
            }
        }  
  • 我们可以称之为java中方法重载的例子吗?如果不是为什么?
  • java中是否可以有具有相同签名但返回类型不同的方法?
4

3 回答 3

2

这显然不是方法重载。重载意味着您​​的方法具有不同的参数返回类型与重载无关。

public void method(int a,int b);
public void method(String s,int b);

或者你可以说不同数量的参数。

public void method(int a,int b,int c);
public void method(int a,int b);

你在做什么是压倒一切的。

于 2012-07-19T05:21:50.010 回答
1

上面显示的代码示例是方法覆盖的示例。这是java实现运行时多态的方式。在 java 中,如果使用超类引用调用被覆盖的方法,java 会根据调用时引用的对象的类型而不是变量的类型来确定要执行该方法的哪个版本。考虑

 class Figure{

        double dim1;
        double dim2;

        Figure(double dim1,double dim2){
            this.dim1=dim1;
            this.dim2=dim2;
        }
        double area(){
            return 0;
        }

    }
    class Rectangle extends Figure{

        Rectangle(double dim1,double dim2){
            super(dim1,dim2);
        }
        double area(){
            double a;
            a=dim1*dim2;
            System.out.println("dimensions of rectangle are "+dim1+" "+dim2);
            return a;
        }

    }
class Triangle extends Figure{


    Triangle(double dim1,double dim2){
        super(dim1,dim2);
    }
    double area(){
        double a=(dim1*dim2)/2;
        System.out.println("base & altitude of triangle are "+dim1+" "+dim2);
        return a;
    }

}
class test{

public static void main(String[] args){
    Figure r;
    Rectangle b=new Rectangle(10,10);
    Triangle c=new Triangle(10,10);
    r=b;
    System.out.println("area of rectangle fig "+r.area());
    r=c;
    System.out.println("area of triangle fig "+r.area());
    }

}

输出:矩形的尺寸为 10.0 10.0 矩形图 100.0 的面积 三角形的底和高度为 10.0 10.0 三角形的面积 50.0

对于第二个 qstn:不。签名意味着独一无二。返回类型不是签名的一部分

于 2012-07-24T08:01:26.593 回答
0

我们可以称之为java中方法重载的例子吗?

不。

如果不是为什么?

重载意味着“同名,不同的参数”,但是你有实现方法的子类,仅此而已。

java中是否可以有具有相同签名但返回类型不同的方法?

不。

于 2012-07-19T05:27:07.333 回答