Q
类中的抽象方法
-1
A
回答
2
因为它不能直接实例化了。此外,如果您不将该类本身标记为abstract
,则会出现编译器错误。
0
一旦方法是抽象的,就声明它没有实现。你会如何建议VM实例化该类的一个实例?
2
首先,我要猜测你提到的博客实际上是在讨论C++。在Java中,在用abstract关键字声明的类中声明抽象方法是一个编译器错误。随着中说,考虑这个(错误)代码:
class A
{
abstract void foo();
}
A a = new A();
a.foo(); //Whoa! what are we supposed to do??!
如果A
已被宣布为抽象(如将在真正的代码需要),这本来是不可能实例化。
如果某个类的任何部分缺失(即声明为抽象类),则该类必须是抽象的,因为部分不能使用。
在C++中,没有abstract
关键字 - 如果一个类具有任何抽象方法(在C++中称为纯虚函数),则该类是自动抽象的。
另一方面,在Java中,如果使用关键字abstract
声明一个类只是抽象的。但是,如果有任何抽象方法,则需要此关键字,因此实际上两个系统之间的实际差异很小。在两种语言中,如果一个类具有任何抽象方法,则该类必须是抽象的:在C++中,这只是如何定义抽象类的;而在Java中,它是通过关键字abstract
的机制来实现的。
0
抽象方法是为方法定义合约但不实现该功能的方法。
要用不能满足定义的合同的方法实例化一个类,因为没有实现将无法工作。因此抽象方法意味着你不应该能够实例化类。
0
当其方法的任何方法声明为abstract时,类自动变为抽象类。
有人可以解释一下当我们使用 只有一个抽象方法时,为什么整个类变得抽象。
该类必须声明为Abstract,因为编译器需要一个正文类的方法,否则会抛出错误。因此,无论你写的方法体或类声明摘要
例子:
class SomeClass{
// Method without body
public void SomeMethod();
public static void main(String[] args) {
}
}
当您尝试编译它,您将获得:
SomeClass.java:4: missing method body, or declare abstract
public void SomeMethod();
相关问题
- 1. 建议从抽象类中的方法调用抽象方法
- 2. C#:抽象类中的抽象和非抽象方法?
- 3. 抽象类非抽象方法调用
- 4. 抽象类和抽象方法
- 5. 抽象类没有抽象方法
- 6. C++:用抽象方法创建抽象类并重写子类中的方法
- 7. 在抽象类中调用非抽象类方法
- 8. 在抽象类中使用抽象类时如何实现抽象方法
- 9. 抽象类/方法实现
- 10. 使用抽象类方法
- 11. 抽象类方法声明
- 12. 抽象类和方法
- 13. 抽象类工厂方法
- 14. 具有抽象类参数的抽象方法的Java抽象类
- 15. 虚拟类中的抽象方法
- 16. 抽象类中的具体方法
- 17. C#接口中的方法,抽象类
- 18. 抽象类(C#)中的部分方法
- 19. 抽象类中的泛型方法
- 20. 抽象类中的受保护方法
- 21. 编号分类中的抽象方法
- 22. 抽象方法重写抽象方法
- 23. 从抽象类中的回调调用抽象方法
- 24. 类不抽象,也不重写java.util.timertask中的抽象方法run()
- 25. 非抽象类不能覆盖Comparable中的抽象方法compareTo?
- 26. 抽象类的方法覆盖另一个抽象类
- 27. 如果无法创建抽象类的新对象,抽象类中的非抽象方法有什么意义?
- 28. 如何使用抽象方法测试抽象类中的方法?
- 29. 抽象类的抽象方法与java中接口的抽象方法的区别
- 30. 类不抽象,不会在抽象方法中覆盖
你的标题暗示的东西,不存在。如果你有一个抽象方法,那么这个类必须被声明为抽象的(这意味着在'class'之前使用'abstract'关键字)。 –