“找不到符号:方法”但该方法已声明

2024-04-26

在我的驱动程序中,这一行给了我cannot find symbol错误,我不知道为什么。该方法在SavingsAccount类,我可以引用我的驱动程序中的所有其他方法,但不是那个方法,我尝试将类型更改为double等但仍然无法正常工作。

Account acct2 = new SavingsAccount (name);
acct2.calculateBalance();

SavingsAccount类继承自Account class:

public class SavingsAccount extends Account
{
    private final short minBalance = 0;
    private double overdraftFee;
    private double yearlyInterestRate = 0.02;
    private double interestAmount;

    public SavingsAccount (String name)
    {
        super(name);
    }

    public double withdraw (double amount)
    {
        if (accountBalance - amount >= minBalance)
        {
            accountBalance -= amount;
            System.out.print ("Withdraw Successful");
        }
        else 
        {
            accountBalance -= amount;
            overdraftFee = accountBalance * (0.10);
            accountBalance += overdraftFee;
            System.out.print ("Withdraw Succesful, however overdraft fee of 10% has been applied to your account");


        }

        return accountBalance;
    }

// ----------------- this is the method I try to invoke -----------------------------
    public void calculateBalance ()
    {
        interestAmount = (accountBalance * yearlyInterestRate);
        accountBalance += interestAmount;
    }
// ----------------------------------------------------------------------------------

    public String toString()
    {
        return super.toString() + " Interest Received: " + interestAmount;
    }


}

帐户类别(如果需要)

import java.util.Random;
import java.text.NumberFormat;

public abstract class Account
{
    protected double accountBalance;
    protected long accountNumber;
    protected String accountHolder;
    public Account (String name)
    {
        accountHolder = name;
        accountBalance = 0;
        Random accountNo = new Random();
        accountNumber  = accountNo.nextInt(100000);
    }

    public double deposit (double amount)
    {
        accountBalance += amount;

        return accountBalance;
    }

    public String toString()
    {
        NumberFormat accountBal = NumberFormat.getCurrencyInstance();
        return "Account Balance: " + accountBal.format(accountBalance) + "\nAccount Number: " + accountNumber;
    }

    public String getAccountHolder()
    {
        return accountHolder;
    }

    public double getAccountBalance()
    {
        return accountBalance;
    }

    public abstract double withdraw (double amount);

}

Account acct2 = new SavingsAccount (name);
acct2.calculateBalance();

这是因为虽然你有一个对象SavingsAccount您正在使用类型的引用变量Account所以你只能访问其中的那些方法Account class.

而你没有calculateBalance()方法在你的Account class.

这就是为什么您无法访问它并且编译器抱怨它找不到名为的方法calculateBalance因为它看到引用类型是Account并且里面没有这样的方法Account class.

如果您想使用该方法,请将引用类型更改为SavingsAccount :

SavingsAccount acct2 = new SavingsAccount (name);

或者您可以在访问该方法时显式转换它

((SavingsAccount) acct2).calculateBalance();

但要注意它可能会抛出ClassCastException if acct2对象实际上不是对象SavingsAccount

UPDATE:

但 请记住,在运行时,Java 使用虚拟方法调用来动态地 根据实际实例选择将运行的方法的实际版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“找不到符号:方法”但该方法已声明 的相关文章

  • XSD 验证错误:在 web.xml 中找不到 TagLib 标记

    我详细显示错误如下 cvc complex type 2 4 a 发现以元素开头的无效内容 taglib One of http java sun com xml ns javaee 描述 http java sun com xml ns
  • 如何在 NetBeans 中以调试模式单步执行已实现的方法?

    我有课XImpl java它实现了一个接口X java 以及所有它的方法 我调试项目 在执行流程中遇到一个方法X processSomeValue 现在 当我尝试进入该方法时processSomeValue 我无能为力 有什么办法可以让我进
  • 什么是“非阻塞”并发?它与普通并发有何不同?

    什么是 非阻塞 并发 它与使用线程的普通并发有何不同 为什么不在所有需要并发的场景中都使用非阻塞并发呢 使用非阻塞并发有开销吗 我听说Java中可以实现非阻塞并发 我们是否应该在特定场景下使用此功能 将这些方法之一与集合一起使用是否有区别或
  • Maven:无法在 OS X 上找到 java.lang 问题

    当我尝试时遇到以下问题mvn clean install显然它无法找到运行时 jar 但我需要做什么 错误日志 ERROR COMPILATION ERROR INFO ERROR Failure executing javac but c
  • 将双精度转换为二进制表示形式?

    我尝试将双精度数转换为其二进制表示形式 但使用此Long toBinaryString Double doubleToRawLongBits d 没有帮助 因为我有大量数字 Long 无法存储它们 即2 900 Long toBinaryS
  • java.io.IOException: EnsureRemaining: 仅剩余 0 个字节,尝试读取 1

    我在 giraph 中的自定义类方面遇到一些问题 我制作了 VertexInput 和 Output 格式 但总是收到以下错误 java io IOException ensureRemaining Only bytes remaining
  • 如何在异常处理程序中访问访问请求主体

    我们有一个 Spring Boot 应用程序 我们的控制器期望在我们的端点之一中有一个 XML 文档元素 PostMapping value api v1 do stuff consumes APPLICATION XML VALUE pr
  • JCombobox 字符串项(可见)和整数键(固有)

    我有一个数据库模式 它将作为 JTable 列显示在 JCombobox 中以选择名称 但我希望将 ID 字段插入 作为外键 到另一个表中 通常 在下拉列表中选择一个项目 将所选项目带到组合框的显示区域 我想要做的是 当选择组合框中的任何项
  • 使用 Bouncy Castle 重建 ED25519 按键 (Java)

    Bouncy Castle 的最新 测试版 版本 bcprov jdk15on 161b20 jar 支持 ED25519 和 ED448 EC 加密以进行签名 我设置了这个完整的工作示例 它按预期工作 我的问题 我是否正确重建了私钥和公钥
  • Java Sound可以用来控制系统音量吗?

    Java 声音优惠FloatControl各种声音线路功能的实例 以及MASTER GAIN http docs oracle com javase 7 docs api javax sound sampled FloatControl T
  • 如何从 Jackson 中的自定义解串器调用默认解串器

    我在杰克逊的自定义解串器有问题 我想访问默认序列化器来填充我要反序列化的对象 在填充之后 我将做一些自定义的事情 但首先我想使用默认的 Jackson 行为反序列化对象 这是我目前拥有的代码 public class UserEventDe
  • 抽象方法实现与抽象方法重写。这两个对于抽象类意味着相同吗?

    我几乎要采取Java SE 8 程序员我 exam 1Z0 808 我正在使用这个学习指南 https www selikoff net java oca 8 programmer i study guide https www selik
  • 在类路径中使用通配符调用 java 失败

    我当前目录中有一些 jar 它们都需要位于类路径中 因此我想对类路径使用通配符约定 命令行是 java exe classpath org python util jython args 但是我收到这个错误 Exception in thr
  • 使用枚举变量切换字符串

    我有一个具有不同值的枚举 并且想要切换字符串变量 现在 我在尝试将枚举值转换为字符串 可以用作大小写常量 时遇到了困难 我最好的尝试是将枚举转换为字符串数组 但开关似乎不接受数组值作为大小写常量 IntelliJ 说 需要恒定的表达 Enu
  • 字节流和字符流

    请解释一下什么是字节流和字符流 这些究竟意味着什么 Microsoft Word 文档是面向字节的还是面向字符的 Thanks 流是一种顺序访问文件的方式 字节流逐字节访问文件 字节流适用于任何类型的文件 但不太适合文本文件 例如 如果文件
  • Java文本输出中的UTF-8编码问题

    我一直致力于测试高棉语 Unicode Wordbreaker 的各种解决方案 高棉语单词之间没有空格 这使得拼写检查和语法检查变得困难 以及从旧高棉语转换为高棉语 Unicode 我得到了一些源代码 现在在线 http www white
  • Spring 非托管 bean 的依赖注入

    我有一个非托管的 JPA 域类 它是通过实例化的new操作员 UserAccount account new UserAccount userRepository save account In my UserAccount类 我有一个be
  • 在JAVA中将数据写入.txt文件?

    我想知道是否是在JAVA中将计算的数据写入文本文件 我的 JAVA 代码是一个基于 GUI 的 gpa 计算器 我只想添加一个 JButton 和 ActionListener 它将类名 GPA 点和计算出的 GPA 写入 txt 文件 这
  • Android中计算两个时间之间的差异

    我有两个字符串变量 例如 StartTime 和 EndTime 我需要通过用 StartTime 减去 EndTime 来计算 TotalTime StartTime和EndTime的格式如下 StartTime 08 00 AM End
  • Java 8 流过滤器 - 基于排序的更新

    我正在尝试对过滤器中的字段进行排序 输入文件 样本记录 DocumentList Document id 5975ff00a213745b5e1a8ed9 u id mailboxcontent id 5975ff00a213745b5e1

随机推荐

  • 使用 Microsoft 托管扩展和 net472 时活动为空

    我正在尝试将 OpenTelemetry 与使用 Microsoft Extensions Hosting 的 net472 应用程序一起使用 我这样创建我的主机 Host CreateDefaultBuilder ConfigureSer
  • 无法在 Mac 上安装 mysqlclient

    我尝试使用以下命令在虚拟环境中的 mac 上安装 mysqlclient pip3 install mysqlclient 我收到以下错误 Collecting mysqlclient Using cached https files py
  • MySQL 在同一列上两次连接同一个表,不同的值仅返回最近的行

    我一直试图解决复杂 JOIN 的一小部分 我们有一个 说明 表和一个 估计 表 在 估计 中 我们有不同类型的多行estimates对于给定的指令 说明表 id address status 1 27 TAYLOR ROAD ALBION
  • 软件需求分析[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有很多用于编写和管理需求的工具 但是有什么好的工具可以用来审查它们吗 我不是在谈论managing审查 但寻找常见需求错误的自动化工具 例
  • Console.Write 在 .NET GUI 应用程序中

    在 C NET GUI 应用程序中 我还需要在后台使用控制台来执行某些任务 基本上 我使用第三方库进行一些处理 需要大量时间 将其中间结果写入控制台 该处理是一项计算耗时的任务 因此 我将此任务分配给后台工作人员 我的意思是后台工作人员调用
  • 如何调用 ActiveRecord 验证器作为实例方法(ala Sequel)?

    我有一个模型 根据其当前状态需要不同的验证器 我应该如何为每个实例调用 ActiveRecord 验证器 我想尽可能多地重复使用管道 但我不知道如何继续 class Order lt ActiveRecord Base attr acces
  • 更改 gltf 对象颜色的问题

    有了这个答案作为参考 我已经成功改变了gltf模型的颜色 更改 AR JS 中对象 dae 或 gltf 的颜色 https stackoverflow com questions 58589525 change the color of
  • Android 中什么原因导致 MotionEvent.ACTION_CANCEL?

    我正在调试 Android 上的一些触摸处理内容 并试图找出为什么 MotionEvent 发送到我的视图onTouchListener包含一个cancel行动 我无法找到任何有关其原因的文档 并且希望有人能为我指出调试此问题的正确方向 错
  • Neo4jClient - 从 Neo4jClient 中创建索引?

    有没有办法在 Neo4jClient 中创建索引 我已经完成了原始查询 但认为这不是最好的选择 我这样做的原因是出于测试目的 我需要删除 重新创建数据库来测试不同设计的性能 你可以做这样的索引 graphClient Cypher Crea
  • 在 div 标签中垂直居中图像[重复]

    这个问题在这里已经有答案了 可能的重复 图像垂直和水平居中 CSS https stackoverflow com questions 2478434 center an image vertically and horizontally
  • d3 单击时聚焦于节点

    我正在尝试实现一种力布局 其中单击节点将能够专注于节点周围的区域 我看过一些例子 但我收到一个错误 上面写着link bounds is not defined 我认为边界没有为力布局定义 并且适用于我从中获取聚焦功能的示例http bl
  • 获取表中两组不同行的计数,然后将它们分开

    我对 MySQL 很陌生 我正在尝试提出一个基本上可以执行以下操作的查询 select from tasks where completed 1 除以 select from tasks where completed 0 我已经找到了解决
  • 我可以定义一个具有与每个值的键对应的值约束的 Typescript 映射吗?

    In 这个游乐场 https www typescriptlang org play code KYDwDg9gTgLgBASwHY2FAZgQwMbDgQQCMBnGKHGfbGBCJOAbwCg44YBPMYALjlKmQBzANwtE
  • 由 VBScript 运行的 xPath 中的未知方法

    错误消息是 msxml3 dll 未知方法 Record CelloXml Integration Case ServiceEvent gt last 我的代码如下所示 错误出在案例上NEW Case OLD可以很好地配合 0 在那里 On
  • 为什么 lambda 比 IL 注入动态方法更快?

    我刚刚构建了动态方法 见下文 感谢其他 SO 用户 看起来 Func 创建为动态方法 IL 注入比 lambda 慢 2 倍 有谁知道具体原因吗 编辑 这是在 VS2010 中构建为 x64 版本的 请从控制台而不是从 Visual Stu
  • 添加新的 ApplicationBarMenuItem 图标时无法分配给属性

    我添加了一个新的ApplicationBarMenu带有图标的按钮到我的 wp7 项目中的页面 当尝试运行页面时我得到 无法分配给属性 Microsoft Phone Shell ApplicationBarIconButton Click
  • 为量角器安装特定的 chromedriver

    我在 CircleCi 上运行的 chrome 驱动程序遇到问题 问题是运行时 node modules bin webdriver manager update 然后使用以下命令检查 chromedriver 和 selenium 的版本
  • html中的有什么用?

    看起来它允许您编辑元素的内容 但实际上发生了什么 这个属性有什么用呢 编辑 参见here http www w3 org TR html5 editing html contenteditable 这通常用于富文本输入 虽然常规表单元素如
  • Python 代码中标识符错误中的无效字符

    对于以下代码 我收到 标识符中的无效字符 错误 显示错误时 第 3 行中的 http 会突出显示 我是Python新手 请帮忙 import requests import html r requests get http cricapi
  • “找不到符号:方法”但该方法已声明

    在我的驱动程序中 这一行给了我cannot find symbol错误 我不知道为什么 该方法在SavingsAccount类 我可以引用我的驱动程序中的所有其他方法 但不是那个方法 我尝试将类型更改为double等但仍然无法正常工作 Ac