JAVA语言抽象类与接口学习详解
小标 2019-01-09 来源 : 阅读 1118 评论 0

摘要:本文主要向大家介绍了JAVA语言抽象类与接口学习详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言抽象类与接口学习详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


JAVA抽象类与接口的详细解读与示例


先总结一下:通过抽象类来实现接口,可以只实现接口中的某一部分通用方法,这样在子类继承实现抽象类的时候可以只重写接口中的特殊方法【即非通用方法】,而若通过普通类来实现implement接口则需要重写override所有方法,不灵活。使用抽象类来作为接口的代理,可以提高编程的灵活性与效率,减少冗余代码。


下面再分部分介绍:


1、接口存在的原因:


JAVA是单继承的,不支持多继承,但是有了接口,JAVA可以实现多个接口;


一个类要是实现某一个接口就必须实现接口内声明的所有方法(强迫执行,即便是空方法,也要实现);


接口特点:


1.接口内所有方法只有声明,没有方法体(隐式声明),例如:public abstract void func();


2.接口内的所有变量都默认是public static final ,必须被显示初始化;


3.接口没有构造方法,不能被实例化;


4.实现接口的类要实现所有的抽象方法,否则该类就必须声明为抽象类,加上 abstract关键字;


5.接口不可以实现接口(所有接口都是抽象方法嘛),但是接口支持多继承哟!


那么有接口要抽象类做什么呢?


2、首先我们认识一下抽象类


1.抽象类内允许有一般变量和一般方法;


2.抽象类必须有abstract关键字;


3.抽象类里面可以没有抽象方法,但是即便如此,也不能实例化;(有抽象方法的一定是抽象类)


4.抽象类虽然不能被实例化,但是有构造方法(派生类可以扩展)


好了那么说一说抽象类,怎么用呢,什么时候用抽象类???


当有多个类实现同一个接口的时候,那么每个类都把那一个接口的所有方法实现了(如上文:实现接口,必须实现接口的所有方法);


那么如果有几个方法,在这几个子类中的实现完全一样,我们就可以用抽象类来把这些方法单独拿出来作为公共方法;


由抽象类来实现接口内,这些子类的公共方法(就是实现方式完全一样的),然后这些子类只要继承这个抽象类就OK了。


3、那么接口和抽象类应用逻辑就出来了


第一步,先写一个接口,声明实现这个接口应该要做的所有方法;


第二步,这个接口的实现有公用的部分,用抽象类来实现,这样抽象类里有所有方法的声明,以及公共方法的实现,所以简化了接口的实现


第三步,派生类只要继承并实现抽象类就OK!


以上文字如果觉得,有点绕,那么请看代码示例:


先声明一个接口


public interface InterExample{// 声明一个接口

  

       public abstract  void  function1();

  

       public abstract  void  function2();

  

       public abstract  void  function3();

  

       public abstract  void  pubFunct();  // 公用方法声明

  

}

   


声明抽象类,实现上面的接口


public abstract class AbsExample  implements InterExample{

      //  实现公用方法

      public void pubFunction(){

          System.out.println("这是派生类的公用方法");

      }//

}

   


一般类(继承了抽象类的派生类)


public class ExampleA extends AbsExample{

 

public abstract  void  function1(){

 

System.out.println("A派生类个性化使用的方法1");

 

}

  

public abstract  void  function2(){

 

System.out.println("A派生类个性化使用的方法2");

 

}

  

public abstract  void  function3(){

 

System.out.println("A派生类个性化使用的方法3");

 

}<br>

 

}


public class ExampleB extends AbsExample{

        public abstract  void  function1(){

            System.out.println("B派生类个性化使用的方法1");

        }

  

        public abstract  void  function2(){

            System.out.println("B派生类个性化使用的方法2");

        }

    

        public abstract  void  function3(){

            System.out.println("B派生类个性化使用的方法3");

        }

      

}

   


代码里面看到:公共方法即:pubFunction(),在抽象类内实现了,ExampleA,ExampleB公用,没有必要在ExampleA、ExampleB两个类内分别各写一遍相同的实现代码了;


另外:如果增加子类ExampleC,pubFunction()的实现和ExampleA、ExampleB不同,那么只要在ExampleC内重写一遍该方法就好,依然保持灵活。


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程