我刚刚遇到了关于抽象类的两种不同意见:
1)有人说,抽象方法不能在具体(通用)类中使用;而抽象类可以同时具有抽象/非抽象方法
2)虽然,在youtube上高度关注的一个教程说,“任何有抽象方法的类,都会让它的类自动定义为抽象”
第二点与第一点完全相反;在实现它时,我确实只在第一个概念上取得了成功,但在第二个概念上却没有成功。但是,我仍然想在这方面有一个详细的说明,如果有人能耐心地帮助我的话。
我刚刚遇到了关于抽象类的两种不同意见:
1)有人说,抽象方法不能在具体(通用)类中使用;而抽象类可以同时具有抽象/非抽象方法
2)虽然,在youtube上高度关注的一个教程说,“任何有抽象方法的类,都会让它的类自动定义为抽象”
第二点与第一点完全相反;在实现它时,我确实只在第一个概念上取得了成功,但在第二个概念上却没有成功。但是,我仍然想在这方面有一个详细的说明,如果有人能耐心地帮助我的话。
正如官方 Java 教程中所述,“如果一个类包含抽象方法,则该类本身必须声明为抽象”。它不会自动变得抽象;它需要明确标记为抽象。
抽象类可以有方法抽象和非抽象。举个例子,
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
}
但是,如果您在非抽象类中声明一个抽象方法,则必须将其自身转换为抽象方法。
另一方面,抽象方法将在抽象父类的继承类中实现。因此,您将在泛型类中执行此实现。
我希望这会有所帮助。
任何包含抽象方法的类都不能被实例化,因为它包含未定义的方法。任何时候创建一个类的对象,它都必须包含该类的所有内容,并且它们都必须被定义。
因此,您需要将类声明为抽象类,这意味着该类不能被实例化。但仅仅因为一个类是抽象的,并不意味着它必须只实现抽象方法。例如,您可以在抽象类中拥有静态方法,因为调用静态方法属于该类而不是该类的对象或实例。