我在节目结束时感到难过。我正在创建一个银行帐户java程序,并且在将抽象类和子类集成在一起时遇到了问题。
public abstract class Account {
public static void main(String args[]) {
CheckingAccount Account1 = new CheckingAccount();
}
public Account() {
//
}
public class CheckingAccount extends Account {
//
}
}
我已经尝试了外面的CheckingAccount
类并从课程中删除了public
,然后我收到错误消息,它找不到Account类的主要内容。
如果我将static
添加到CheckingAccount
类,则会出现与上述相同的错误。
答案 0 :(得分:3)
您无法从静态方法(CheckingAccount
)实例化实例类(main
)。你必须创建内部类static
:
public abstract class Account {
public static void main(String args[]) {
CheckingAccount Account1 = new CheckingAccount();
}
public Account() {
//
}
public static class CheckingAccount extends Account {
//
}
}
顺便说一句,这是一个非常奇怪的设计。我会避免:
答案 1 :(得分:1)
内部类的问题是 - 只有当你完全知道自己需要它时才应该使用它。否则你会遇到这样的问题。
那么问题是什么?基本上,内部类实例总是包含封闭类的实例。因此,要访问它们,您需要一个封闭类的实例。但是,您正尝试从CheckingAccount
方法实例化static
类。由于static
方法没有引用this
实例,因此这种实例化方式是非法的。
如果将实例化更改为此问题,可能会出现问题:
public static void main(String args[]) {
CheckingAccount Account1 = new Account().new CheckingAccount();
}
但是,由于Account
类为abstract
,因此无法正常工作。所以,你应该在这里做两个立即的改变:
main()
方法移到Account
类之外。理想情况下,您的域类中不应该使用main()
方法。为此创建一个单独的类。CheckingAccount
课程移到Account
课程之外。这对你来说会更容易。答案 2 :(得分:0)
一个java类文件中不能有两个公共类。并且,Java文件应该以其中的公共类命名。