abstract 与 interface

abstract类:如:abstract class Animal{}

                      抽象类,不能创建对象(如一些父类),但是可以声明一个抽象类型的引用

                      (可以声明父类类型子类对象,编译时利用多态调用抽象方法)。

                      含有抽象方法的类一定是抽象类,但抽象类并不一定要有抽象方法;

                      抽象类一般是用来被继承的;子类继承自抽象类,就要实现里面的抽象方法,

                      如果不想让子类也是抽象类的话,必须实现父类里面所有的抽象方法。

                      抽象类有构造方法,有父类,也遵循单继承的规律。

     

      abstract方法:如:public abstract void sleep();

           抽象方法,只有方法名的定义,没有实现体(只定义了能做什么,没定义怎么做),不能被调用,

                      用于被子类的方法覆盖或重新实现。只能放在抽象类中。

                      好处:允许方法的定义和实现分开。

                      public  protected default  private  static final abstract

                   可以: public static

                           private static

                          public final

                          public static final

                 不可以:abstract final void eat(); 

                 private abstractvoid eat();

                 static abstract voideat();

            abstract不能和final,private,static连用。

interface:是抽象类的变体,。在接口中,所有方法都是抽象的。如:

                       interface M{

                                       intnum=3;

                                       voideat();

                                  }

      理解为接口是一个特殊的抽象类,所以接口不能创建对象,且接口没有构造方法,

      但可以声明一个接口类型的引用(m是接口类型实现类对象,如:M m=new N();)

      接口存在的意义是被子类实现,如果不想让子类也抽象,

      就要实现接口里面所有的抽象方法,实现过程中注意访问权限;

 

      用  implements 关键字实现接口,如:classN implements M{

                                                  publicvoid eat(){...}

                                                }

      接口里面的常量默认都是public static final的;

      接口里面的方法默认都是public abstract的。

      接口本身支持多继承,继承了父接口里功能的定义,如,interface A extends B,C,D{}        //A,B,C,D都是接口;

      类可以同时继承一个父类和实现接口(或多个接口)。

      如:classAA extends BB implements CC,DD,EE{}//AA,BB      是类,CC,DD,EE是接口;

      作用:1,用接口去实现多继承,接口是对类的共性进行再次抽象,抽象出类的次要类型。

                 如:蜘蛛侠,拥有人和蜘蛛的属性,但主要类型是人,次要类型(接口)是蜘蛛,

                 因为接口是次要类型,所以在类关系里不占一个节点,不会破坏类层次关系的树状结构,

             2,标准(保证弱耦合):一个接口就是一个标准(里面的属性不能改变,只定义了功能,

但没有被实现),  接口将标准的制定者,标准的实现者以及标准的使用者分离开,

                 降低实现者和使用者的耦合。接口是java里一种重要的降低耦合的工具;

接口可以屏蔽不同实现类的差异,

                 当底层的实现类更换后,不会对上层的使用者产生影响,体现在参数和返回值。  

                

                 写程序时,应该先写实现者再写使用者,如:Bank.java是实现者,View.java是使用者,

                 但是有了接口之后,就可以用接口回调的功能;

                 接口回调:先定义接口,然后写使用者和实现者的顺序随便(一般是先写使用者,

后写实现者);利用参数把实现者传给使用者(即:实现者是使用者的属性),

使用者利用接口调用实现者相应的功能。

       **接口和抽象类的区别 1一个类可以implements多个接口,而只能extends一个抽象类

                       2,一个抽象类可以实现部分的方法,而接口都是抽象的方法和属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值