我刚刚遇到了关于抽象类的两个不同意见:
1)有人说, 抽象方法不能用于具体(普通)类 ;而抽象类可以同时具有抽象/非抽象方法
2)虽然在youtube上受到高度关注的教程说:“任何有抽象方法的类,都会让它的类自动定义为抽象”
第二点与第一点形成鲜明对比;在实现它时,我确实只在第一个概念中取得了成功,而不是第二个概念。但是,如果有人能帮助我耐心,我仍然希望在这方面有一个明确的清晰度。
答案 0 :(得分:1)
如official Java tutorial中所述,"如果一个类包含抽象方法,那么该类本身必须被声明为abstract"。它不会自动变得抽象;它需要明确标记为抽象。
答案 1 :(得分:0)
任何包含抽象方法的类都无法实例化,因为它包含未定义的方法。无论何时创建类的对象,它都必须包含该类的所有内容,并且必须全部定义它们。
因此,您需要将该类声明为抽象,这意味着该类无法实例化。但仅仅因为一个类是抽象的,并不意味着必须只实现抽象方法。例如,您可以在抽象类中使用静态方法,因为调用静态方法属于类而不是对象或实例上课。
答案 2 :(得分:0)
抽象类可以有方法摘要和非摘要。例如,
public abstract class Employee {
...
//this method would be implemented in those classes that extends from Employee.
public abstract void calculateSalary();
public Employee addEmployee() {
//Method body
}
但是如果你在非抽象类中声明一个抽象方法,则必须将其自身转换为抽象方法。
另一方面,抽象方法将在抽象父类的继承类中实现。所以你将在泛型类中执行此实现。
我希望这会有所帮助。