java抽象类和接口

今天详细的看了看抽象类和接口的相关知识,平常使用接口比较多,这里就写写自己对抽象类的理解。

抽象类与接口最大的区别是抽象类中可以有对方法的实现,而接口中智能对方法的模型进行定义,不允许有任何的方法实现。

举个例子,

public abstract Animal
{
   public void eat(Food food)
   {
        // do something with food.... 
   }
   public void sleep(int hours)
   {
        try
	{
		// 1000 milliseconds * 60 seconds * 60 minutes * hours
		Thread.sleep ( 1000 * 60 * 60 * hours);
	}
	catch (InterruptedException ie) { /* ignore */ } 
   }
   public abstract void makeNoise();
}
定义一个抽象类动物,其中有两个方法eat()和sleep(),这两个方法是我认为动物都具有的,可以定义为一般的方法,在继承时子类自动拥有。而makeNoise()方法我认为是每个动物各有不同(声音不同),就用一个抽象方法去定义它,类似于接口中方法的定义。那么如果有一个种类的动物继承这个动物类,如:

public Dog extends Animal
{
   public void makeNoise() { System.out.println ("Bark! Bark!"); }
}
像dog这个类,那么继承animal后,它自动拥有了animal类中eat()和sleep()这两个方法的实现。但是他必须自己实现makeNoise()这个抽象方法的具体内容,发出狗的声音。


总而言之,抽象类比接口增加了方法的实现,对于抽象子类的公有方法非常有利。但是同样的,一个抽象类的定义比接口的定义更加耗费资源。如何选择,根据实际而定。


参考资料:

如果打不开,请看我的另一篇转载博客http://blog.csdn.net/abstractcodes/article/details/76549366

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值