`
wojiaolongyinong
  • 浏览: 73082 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

我再来说说普通类、接口、抽象类

    博客分类:
  • Java
阅读更多

正如标题所示,我呢想说说自己对Java中的,普通类、接口和抽象类的理解。

普通类:

public class ClassName{
         /**
          *里面写已经实现的方法
          */
          public void doSomething(){
                   /*方法体*/
          }
}

 特点:普通类区别于其他两个,因为里面的方法都是实现了的,而且里面的属性可修改,亦可以实例化出一个对象。

 

接口:

public interface Action{
       /**
        *里面的方法都是抽象的,只有方法头,没有方法体,直接就是去掉花括号加分号
        */
        public void doSomething();

        public static final String name = "LONG";
}

 看如上代码,可以分析得到,首先普通类与接口的区别在于定义时所使用的关键字,在普通类中是使用class,而在接口中使用interface关键字,而且还有在继承时,普通类使用extends来继承普通父类(单根继承--所谓的只有一个爸爸),而普通类使用implements来继承接口,而且必须在继承的普通类中实现接口中的所有抽象方法。其次就是花括号里面的内容了,普通方法里面的方法都是普通方法(实现了的方法,就是后面有花括号,哪怕里面什么都没有写),而且普通方法里面的属性可以修改。但是在接口中,方法都是抽象方法,例如就像上面代码中写的那样,没有实现,而且里面中的属性,比如说就是那个代码里面的变量name当在接口中赋完值后,再也不能修改。

接口在我看来就像是一位司令,它只分配任务(就是只定义方法,却不实现),而士兵必须执行(实现接口的类就是士兵,必须把接口中定义的方法都实现),所谓军令如山倒(里面的属性不能再修改)。不知比喻恰当不恰当,请读者见谅哈。。。嘿嘿!

 

抽象类:

public abstract class ClassName{
         /**
         *抽象类介于接口和普通类之间,可以有抽象的方法,也可以有实现的方法
         */

         //抽象的方法
         public abstract void doSomething();

         //普通实现了的方法
      public void doAnything(){
                   /*方法体*/
         }
}

 看上面的代码,知道定义除抽象类时必须加关键字abstract,还有抽象类里面的方法,如果是抽象的方法,则也必须在抽象方法的前面加上关键字abstract,正如上面代码所示,抽象类里面可以有实现的方法也可以有抽象的方法,当然你可以利用极限的思维,里面可以全部是抽象方法,也可以是全部都是普通实现了的方法。

 

接口只是一种规范,大家都可以来继承,但是要实现里面所有的抽象方法,如果少的话,我想大家可以接受,但是如果很多呢。。。那就很苦逼了,所以这时我们也可以向抽象类抛一下媚眼,有可能会有解决方法。。。哈哈。

自己在这里说了这么多,但是感觉还有很多东西没有说出来,所谓越是基础的东西越是博大精深,所以对我们这些菜鸟来说。。。想要起飞,基础是关键的一步!!

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics