Java 实例化子类的正确方法是什么

Java 实例化子类的正确方法是什么,java,Java,我有一个BankAccount类,它是超类,SavingsAccount和CheckingAccounts是子类/派生类。非常简单的类 前3行代码与后3行代码的区别是什么 前3行代码 BankAccount b = new BankAccount(100); BankAccount s = new SavingsAccount(100); BankAccount c = new CheckingAccount(200); BankAccount b = new BankAccount

我有一个BankAccount类,它是超类,SavingsAccount和CheckingAccounts是子类/派生类。非常简单的类

前3行代码与后3行代码的区别是什么

前3行代码

 BankAccount b = new BankAccount(100);
 BankAccount s = new SavingsAccount(100);
 BankAccount c = new CheckingAccount(200);
 BankAccount  b = new BankAccount(100);
 SavingsAccounts s= new SavingsAccount(100);
 CheckingAccount c = new CheckingAccount(200);
接下来的3行代码

 BankAccount b = new BankAccount(100);
 BankAccount s = new SavingsAccount(100);
 BankAccount c = new CheckingAccount(200);
 BankAccount  b = new BankAccount(100);
 SavingsAccounts s= new SavingsAccount(100);
 CheckingAccount c = new CheckingAccount(200);

没有“正确”的方法。你想用这些东西做什么?您是否对它们都是帐户这一事实感兴趣,或者您是否需要知道它们是什么类型的帐户


一般的规则是不要假设超过你需要的。如果以下代码不需要知道它们之间存在差异,请将变量声明为BankAccount。

我正在准备测试。问题是在下面几行代码之后可以访问哪些方法。尽管在=符号的右侧,我说的是Savingsaccount和checkingaccount,但它只是在创建bankaccount对象。我不明白。银行账户b=新银行账户100;银行账户s=新储蓄账户100;银行账户c=新支票账户200;我认为上面给出的关于编程到接口的链接是最相关的。抛开代码不谈,您经常会看到List myList=new ArrayList。为什么是这样写的?首先,后续代码将处理任何类型的列表,因此坚持为其指定特定的ArrayList将是过度限制。但另一方面,程序员认为ArrayList是一个很好的实现选择,它相当紧凑,足够高效,除非您需要从中间删除很多内容,或者需要考虑其他一些问题。