A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 掉了一地.. 中级黑马   /  2015-2-1 20:27  /  673 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类中可以定义抽象方法的
当一个抽象类中的方法全是抽象的
这是,可以通过另一种特殊的形式来体现。
可以将该类定义为接口。
interface。。

接口里的方法只能是抽象的,

接口中的成员的定义格式:
     1,定义变量:但是变量必须有固定的修饰符 public static final所以接口中的变量也称之为常量。(可以领略,编译器会自动加上)。
     2,定义方法:方法也有固定的修饰符:public abstract
接口里的成员都是公共的。(可以领略,编译器会自动加上)。

接口的特点:
   1.接口不可以创建对象,
   2.子类必须要覆盖掉接口中的所有的抽象方法后,子类才可以实例化。否则子类也会是一个抽象类。

接口的子类:子类与子类的关系是继承,类与接口之间的关系是实现,通过关键字:implements
例子: class DemoImpl implements  demo{
        //重写接口中的所有方法:       
}

接口与抽象类是有很大区别,抽象类可以通过接口定义但接口比抽象类具有更多功能。

接口最重要的体现:
    多继承弊端:当多个父类有相同功能时,子类调用会产生不确定性。
    解决多继承的弊端,将多继承这种机制在java中通过多实现完成。class C implements A,B{}//多实现,利于多态化。
    原因在于:多继承父类中的功能有主体,而导致调用运行时,不确定哪个主体内容 ,多实现接口中没有方法体,需要有子类来明确。     
如果子类想要继续扩展其他类中的功能呢?这是可通过实现接口来完成。

接口的好处:
        1,接口的出现对功能实现了扩展,2,接口的出现定义了规则,3,接口的出现降低了耦合性(解耦)。说明有两方,一方在使用规则(如笔记本电脑),一方在实现这个规则(笔记本的外围设备)。
接口的出现避免了单继承的局限性,父类中定义的事物的基本功能,接口中定义的事物的扩展功能。
    接口可支持多继承,指的是接口与接口之间,支持多继承!
    例子:interface interC extends interB,interA{}

没有抽象方法的抽象类的由来:
   为了使用接口中的部分方法,而覆盖了全部的方法,而且每一个子类都要这么做,复用性差。
   解决:将这些不用的方法单独抽取到一个独立的类中,让这个类去实现接口,并覆盖接口中的所有方法。但这个类不知道具体的实现内容,所以只能为了后期的子类创建对象方便而进行空实现,而这时,这个类创建就像就没有意义,因为其主体内没有方法内容,这个类创建对象就不需要,则可以直接将其抽象化。这就是没有抽象方法的抽象类的存在意义。

接口与抽象类的区别:
        1,抽象类是描述事物的基本功能,可以定义非抽象的方法,
                接口中定义的只能是抽象方法。
        2,类与类之间是继承关系 is a关系。
                类与接口之间是实现关系 like a关系。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马