Note the use of the keyword super in the constructor. Without it, an attempt would be made to use the default constructor in the Device class. The problem is when there is no default constructor in the Device class.

To correct this error, either use the one-argument superclass constructor or put a default constructor into the superclass. Which you choose depends on whether a default constructor makes sense. (You can go either way with this rather contrived example.)

public class Phone extends Device implements Ringable {
	public Phone() {
		super(new Battery());
		System.out.println("Phone Created!");
	}
	
	public Phone(Battery b) {
		super(b);
	}

	// Must have because the Ringable interface demands it
	public void ring() {
		// TODO Auto-generated method stub
		
	}
}