gpt4 book ai didi

java - 为什么java中需要非抽象类?

转载 作者:行者123 更新时间:2023-12-02 08:40:15 26 4
gpt4 key购买 nike

我编写了一个 Bike 接口(interface)并实现了 MountainBike 类,如下所示:

//interface

package com.company;

public interface Bike {

void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);

}
//implementing class 

package com.company;


public class MyBike implements Bike{

int cadence = 0;
int speed = 0;
int gear = 1;

// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and applyBrakes
// all be implemented. Compilation will fail if those
// methods are missing from this class.

public void changeCadence(int newValue) {
cadence = newValue;
}

public void changeGear(int newValue) {
gear = newValue;
}

public void speedUp(int increment) {
speed = speed + increment;
}

public void applyBrakes(int decrement) {
speed = speed - decrement;
}

void printState(){
System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear);
}

public static void main(String[] args) {
MyBike mBike = new MyBike();
mBike.changeCadence(20);
mBike.changeGear(3);
mBike.speedUp(20);
mBike.applyBrakes(20);
mBike.printState();
}
}

我知道在这种情况下我必须在实现类中实现接口(interface)中的所有类。但是,如果我使用抽象类,我不需要全部实现它们。如果是这种情况,为什么不总是使用抽象类,以防我可能仅实现接口(interface)中的部分类或所有类?为什么我们需要使用非抽象类?

最佳答案

抽象类不能使用 new 运算符实例化。因此,您需要具体的实现类,您可以创建一个实例对象。

参见Why can't we instantiate a abstract class in JAVA?了解更多详情。

好读《接口(interface)与抽象类》Interface vs Abstract Class (general OO)

关于java - 为什么java中需要非抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61424487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com