What is the difference between inheriting an interface in Java and using a class by converting it to an interface type?
Example1
public interface MachineMotion {
int MAX_SPEED = 340;
int MIN_SPEED = 0;
public void goStraight();
public void machineStop();
public void setSpeed(int speed);
}
public class Car implements MachineMotion {
int speed = 120;
@Override
public void goStraight() {
System.out.println("the car moves forward.");
}
@Override
public void machineStop() {
System.out.println("car stops.");
}
@Override
public void setSpeed(int speed) {
if(speed > MachineMotion.MAX_SPEED) {
this.speed = MachineMotion.MAX_SPEED;
} else if (speed < MachineMotion.MIN_SPEED) {
this.speed = MachineMotion.MIN_SPEED;
} else {
this.speed = speed;
}
System.out.println("the current speed is " speed "km/h");
}
}
Example2
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findByName(String name);
List<Member> findAll();
}
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
public Long join (Member member) {
memberRepository.save(member);
return member.getId();
}
public List<Member> findMembers() {
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId) {
return memberRepository.findById(memberId);
}
}
I am studying interfaces in Java. However, there is an example of inheriting an interface through implements and using it, and there are cases where the interface is used through type conversion. What is the difference between the two and when is it used?
CodePudding user response:
