Dependency Injection vs Factory Method

From This link

Dependency Injection

Instead of instantiating the parts itself a car asks for the parts it needs to function.

class Car
    private Engine;
    private SteeringWheel;
    private Tires tires;

    public Car(Engine engine, SteeringWheel wheel, Tires tires)
        this.Engine = engine;
        this.SteeringWheel = wheel;
        this.Tires = tires;

Puts the pieces together to make a complete object and hides the concrete type from the caller.

static class CarFactory
    public ICar BuildCar()
        Engine engine = new Engine();
        SteeringWheel steeringWheel = new SteeringWheel();
        Tires tires = new Tires();
        ICar car = new RaceCar(engine, steeringWheel, tires);
        return car;