Java 将特定于子方法作为父类添加到数组后调用该方法

Java 将特定于子方法作为父类添加到数组后调用该方法,java,inheritance,arraylist,polymorphism,Java,Inheritance,Arraylist,Polymorphism,我有两门课:银行账户和支票账户。CheckingAccount类继承自BankAccount类 ArrayList<BankAccount> bankAccounts = new ArrayList<BankingAccount>(); bankAccounts.add( new CheckingAccount(200.00) ); bankAccounts.get(0).writeCheck(100.00); ArrayList bankAccounts=new Ar

我有两门课:银行账户和支票账户。CheckingAccount类继承自BankAccount类

ArrayList<BankAccount> bankAccounts = new ArrayList<BankingAccount>();
bankAccounts.add( new CheckingAccount(200.00) );
bankAccounts.get(0).writeCheck(100.00);
ArrayList bankAccounts=new ArrayList();
银行账户。添加(新支票账户(200.00));
银行账户.get(0).writeCheck(100.00);
因此,我将支票账户添加到银行账户数组中(稍后我还有储蓄账户可以进行多态处理),但由于
writeCheck(double amount)
只是CheckingAccount类的一个方法,因此在最后一行中,它给了我一个错误,说银行账户没有该方法。在我使用支票账户特定方法的情况下,是否有办法仅对行进行强制转换?或者创建ArrayList的行是否有其他参数

((CheckingAccount)bankAccounts.get(0)).writeCheck(100.00);
或以类型安全的方式

if(bankAccounts.get(0) instanceof CheckingAccount) {
   ((CheckingAccount)bankAccounts.get(0)).writeCheck(100.00);
}
或以类型安全的方式

if(bankAccounts.get(0) instanceof CheckingAccount) {
   ((CheckingAccount)bankAccounts.get(0)).writeCheck(100.00);
}
试试这个:

CheckingAccount ca = (CheckingAccount) bankAccounts.get(0);
ca.writeCheck(100.00);
在上面的代码中,从bankAccounts.get(0)返回的对象被BankAccount的引用引用,该对象被显式地强制转换为子类的引用

或者您应该在BankAccount类中定义此方法
writeCheck(双a)
。在编译期间,将检查被调用的方法是否在引用变量的类中定义。由于父类中没有定义
writeCheck(double)
方法,编译器会为您编写的代码抛出一个错误

运行时多态性将确定引用变量是指向父类的对象还是指向子类的对象。方法的签名也必须存在于父类(BankAccount)中,除非您显式地执行上述类型转换

希望这能解决你的疑问

试试这个:

CheckingAccount ca = (CheckingAccount) bankAccounts.get(0);
ca.writeCheck(100.00);
在上面的代码中,从bankAccounts.get(0)返回的对象被BankAccount的引用引用,该对象被显式地强制转换为子类的引用

或者您应该在BankAccount类中定义此方法
writeCheck(双a)
。在编译期间,将检查被调用的方法是否在引用变量的类中定义。由于父类中没有定义
writeCheck(double)
方法,编译器会为您编写的代码抛出一个错误

运行时多态性将确定引用变量是指向父类的对象还是指向子类的对象。方法的签名也必须存在于父类(BankAccount)中,除非您显式地执行上述类型转换

希望这能解决你的疑问