个人理解:
举个例子吧
public Class Dog{
public void cry(){
System.out.println("狗在叫");
}
}
public Class Pig{
public void cry(){
System.out.println("猪在叫");
}
}
public Class Test{
public static void main(String[] args) {
Pig pig = new Pig();
pig.cry();//调用猪叫的方法
}
}
//*********************************
public abstract class Animal{
public abstract void cry();
}
public Class Dog extends Animals{
public void cry(){
System.out.println("猪在叫");
}
}
//Dog方法同上
public Class Test{
public static void main(String[] args) {
Animal an = new Dog();//编译时确定调用哪个对象
}
}
除了动态的调用对象外,(父类的引用指向子类的对象)。有时候抽象和接口也是种约束,比如设计模式中有一种设计模式叫做--建造者模式,就比如,让你建造一个人的对象,人有头,身体,和四肢,如果你在抽象类中或者接口中加入了这几个方法,那么谁要建造个人的对象,必须实现建头部,建四肢,建身体的方法,起码你能保证人是完整的,不会因为漏写而出现缺胳膊少腿的情况。。还有哦,java的封装也有这些有关,就像上边的例子,如果你要增加一个猫cat类,你只需要知道Animal接口,而不要管Pig是怎么实现的,这样有助于信息的隐藏和安全性。。。。自己慢慢多理解下,就会理解它的好处了。。一个类只能继承一个父类,但是能实现多个接口,你还要多理解下抽象类和接口的去别等等。。