Для чего так делают?
Интерфейс ГАРАНТИРУЕТ наличие такого метода в классе.
Интерфейс -- чистая абстракция. 

Это конечно хорошо, что:
class Dog extends Animal{}
class Penguin extends Animal{}

Но walk() может и друг-человек или мой ребенок, а не только животное, 
и плавать может еще рыбка, а не только животное

Когда вы строите некую логику для того, что плавает, то вам не обязательно жестко зашивать программу под животное... То, что животное (и все его потомки) могут плавать -- отлично и круто, но это частный случай
программе фиолетово, ей и мячик подойдет и ребенок и ваше животное, они (программа) ведь бассейн :)