【问题标题】:Java function override [duplicate]Java函数覆盖[重复]
【发布时间】:2023-03-04 00:15:01
【问题描述】:

假设我有 A 类和 B 类。那么,在 main 中,是否有可能取回 A 类的返回值?我现在正在做作业,但似乎无法把它们做对,所以这里是我想问的例子......

public class A
{
    private double total=10;
    public double test()
    {
    return total;
    }
}

  public class B extends A
{
    private double totalB=20;
    public double test()
    {
    return (super.test()+10);
    }
}

public class C
{
public static void main(String [] args)
{
    double Sum;
    B FTest = new B();
    System.out.println("I want to get back return value of class A for calculate\n"+FTest.test()/2);
    //So the answer i want to get is suppose to be 5
    System.out.println("Again i want to use return value of class A\n"+FTest.test()*10);
   //Here the value i want to get is 10*10 = 100
}
}

我得到的答案

I want to get back return value of class A for calculate
30.0
Again i want to use return value of class A
300.0

我想要的答案

I want to get back return value of class A for calculate
5
Again i want to use return value of class A
100

所以我问的直接问题是我能否使用 main 中的 Class A 调用 test() 方法 B 对象。如果可以,怎么做?

【问题讨论】:

  • 你能把这个Java修改成可以实际编译的东西吗?
  • 另外,由于这是家庭作业,您能否将所问的实际问题包括在内;不清楚您是否理解问题的要求。
  • @Dancrumb,代码已编辑,至于作业问题,问题实际上不同,但需要使用覆盖。所以现在我只是想知道我是否能够使用在 main 中声明的对象 B 来取回 A 类而不是 B 类中测试方法的返回值以进行计算。

标签: java


【解决方案1】:

既然你已经创建了一个B类的对象,你可以得到你在A类中初始化的变量的值,除非你修改了B类的test()方法

【讨论】:

    【解决方案2】:

    super 关键字使您可以访问超类的属性和方法。

    由于totalA 中是私有的,您需要通过Atest 方法获取它。

    因此,B 应该变成:

    public class B extends A
    {
        private total=20;
        public double test()
        {
            return super.test()+10;
        }
    }
    

    【讨论】:

    • 有什么方法可以使用 main 中声明的对象 B 调用 A 类中的测试方法吗?类似 FTest.super.test();
    【解决方案3】:

    这里是我可以写的代码..更多你提交的代码中有很多搅拌器关于类和变量的定义..等请参考你的材料

            class A
            {
                 int total=10;
                public double test()
                {
                return total;
                }
            }
    
             class B extends A
            {
                private int total=20;
                public double test()
                {
    
               return total+10;
                }
            }
    
            public class C
            {
            public static void main(String [] args)
            {
    
                A class1 = new A();
                System.out.println("I want to get back return value of class A for calculate");
                //So the answer i want to get is suppose to be 5
                //If override occur only the second time i invoke the method, then how about i want to use it    back again? For calculation.....
                System.out.println("Again i want to use return value of class A"+class1.test()*10);
               //Here the value i want to get is 10*10 = 100
            }
            }
    

    【讨论】:

    • 好的对不起,我编辑了代码~
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 2015-09-26
    • 1970-01-01
    • 2011-06-11
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多