Java 抽象类与非抽象超类

Java 抽象类与非抽象超类,java,inheritance,Java,Inheritance,如果您有一个名为Car的抽象超类,并且您有它的各种子类,以及没有实现的抽象方法,那么为什么还要麻烦使用抽象类引用变量呢。i、 e Car myCar=new Honda(); 在Car类中,只有抽象方法,没有实现,所以拥有它是没有用的,对吗 一点用都没有。它允许您编写依赖于对象为Car的代码,而不知道Car的具体类型 public abstract class Car { public abstract void tootHorn(); public abstract voi

如果您有一个名为Car的抽象超类,并且您有它的各种子类,以及没有实现的抽象方法,那么为什么还要麻烦使用抽象类引用变量呢。i、 e

Car myCar=new Honda(); 

在Car类中,只有抽象方法,没有实现,所以拥有它是没有用的,对吗

一点用都没有。它允许您编写依赖于对象为
Car
的代码,而不知道
Car
的具体类型

public abstract class Car {
    public abstract void tootHorn();
    public abstract void swerve();
    . . .
}

public class Driver {
    private Car car;
    public Driver(Car car) {
         this.car = car;
    }

    public void dealWithDanger() {
        car.tootHorn();
        car.swerve();
    }
    . . .
}
在上面发布的代码中,
Car
可以很容易地成为一个
界面
。但是,通过将其设置为类,可以直接在
Car
类中实现一些方法,这些方法取决于子类指定的抽象方法的行为(尚未指定)


抽象类的关键点在于,您永远不会拥有抽象类本身的实例;代码只能创建某些具体子类的实例。尽管如此,许多应用程序逻辑可以编写成独立于对象的特定类。

这一点都不是无用的。它允许您编写依赖于对象为
Car
的代码,而不知道
Car
的具体类型

public abstract class Car {
    public abstract void tootHorn();
    public abstract void swerve();
    . . .
}

public class Driver {
    private Car car;
    public Driver(Car car) {
         this.car = car;
    }

    public void dealWithDanger() {
        car.tootHorn();
        car.swerve();
    }
    . . .
}
在上面发布的代码中,
Car
可以很容易地成为一个
界面
。但是,通过将其设置为类,可以直接在
Car
类中实现一些方法,这些方法取决于子类指定的抽象方法的行为(尚未指定)


抽象类的关键点在于,您永远不会拥有抽象类本身的实例;代码只能创建某些具体子类的实例。尽管如此,许多应用程序逻辑可以编写为独立于对象的特定类。

抽象部分阻止您创建如下汽车对象:

Car car = new Car();

仅仅创建一辆汽车是没有意义的。

抽象部分阻止您创建这样的汽车对象:

Car car = new Car();

仅仅制造一辆汽车是没有意义的。

看看这个:我认为这会回答你的问题。

看看这个:我认为这会回答你的问题。

不是真的。汽车是本田之上的抽象概念。因此,在未来,您可以更换本田,而无需担心大量修改代码。就我而言,随着家庭的成长,我从本田思域转向斯巴鲁内地。你猜怎么着,我不需要重新学习驾驶,因为“驾驶API”保持不变,我已经知道如何驾驶汽车了。

不太需要。汽车是本田之上的抽象概念。因此,在未来,您可以更换本田,而无需担心大量修改代码。就我而言,随着家庭的成长,我从本田思域转向斯巴鲁内地。你猜怎么着,我不需要重新学习驾驶,因为“驾驶API”保持不变,而且我已经知道如何驾驶汽车。

这可能会让你感兴趣:。这可能会让你感兴趣:。