1

我刚刚遇到了关于抽象类的两种不同意见:

1)有人说,抽象方法不能在具体(通用)类中使用;而抽象类可以同时具有抽象/非抽象方法

2)虽然,在youtube上高度关注的一个教程说,“任何有抽象方法的类,都会让它的类自动定义为抽象

第二点与第一点完全相反;在实现它时,我确实只在第一个概念上取得了成功,但在第二个概念上却没有成功。但是,我仍然想在这方面有一个详细的说明,如果有人能耐心地帮助我的话。

4

3 回答 3

1

正如官方 Java 教程中所述,“如果一个类包含抽象方法,则该类本身必须声明为抽象”。它不会自动变得抽象;它需要明确标记为抽象。

于 2016-01-29T16:50:27.527 回答
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
    }

但是,如果您在非抽象类中声明一个抽象方法,则必须将其自身转换为抽象方法。

另一方面,抽象方法将在抽象父类的继承类中实现。因此,您将在泛型类中执行此实现。

我希望这会有所帮助。

于 2016-01-29T17:43:02.657 回答
0

任何包含抽象方法的类都不能被实例化,因为它包含未定义的方法。任何时候创建一个类的对象,它都必须包含该类的所有内容,并且它们都必须被定义。

因此,您需要将类声明为抽象类,这意味着该类不能被实例化。但仅仅因为一个类是抽象的,并不意味着它必须只实现抽象方法。例如,您可以在抽象类中拥有静态方法,因为调用静态方法属于该类而不是该类的对象实例

于 2016-01-29T17:10:48.027 回答