`
mmdev
  • 浏览: 12930850 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

java什么时候用抽象类,什么时候用接口

 
阅读更多

关于什么时候用抽象类,什么时候用接口,我在这里做一下总结。

首先看下面的例子:

abstract  class AbstractStudent{

     abstract void study();

     void sleep(){

           System.out.println("sleep");

      }

      void smoke(){

              System.out.println("抽烟");

       }

}

//所有的Student被创建都会抽烟,是不是很搞笑?

class Student  extends  AbstractStudent{

        Student Demo stu = new Student();

         ...

}


上面这个学生抽象类中有三个方法,学习,睡觉,抽烟。我们知道任何一个学生都要学习,都要睡觉,但是不是

每个学生都要抽烟呢?这显然是不合理的。难道说创建一个学生对象,就一定要强加给他抽烟的方法?就像一个

学生来了,就一定要他会抽烟?女生也不放过?哈哈!这显然是很荒唐的事情。

于是我们做如下调整:

abstract  class AbstractStudent{

      abstract void study(); 

       void sleep(){ 

               System.out.println("sleep"); 

        }

}

interface Smoking{

      void smoke();

}



//普通的学生,继承AbstractStudent,有学习、睡觉的方法,不抽烟

class Student extends AbstractStudent{



}



//抽烟的学生,除了继承AbstractStudent中的方法,还会抽烟

class SmokeStudent extends AbstractStudent implements Smoking{

   

 }



这样,就把抽烟的同学和不抽烟的同学分离开了。 现在你感觉到了抽象类与接口的不同点了吗?

总结:抽象类中通常放的是类种事物(对象)共有的属性和方法,于是它的子类继承它的时候

就自然有了其所有属性和方法,当有些方法是某种子类特有的时,就应该将这个方法分离出来,

以附加的形式(implements)添加进去。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics