黑马程序员技术交流社区

标题: 接口跟抽象类有什么区别? [打印本页]

作者:   米奇    时间: 2014-3-22 23:28
标题: 接口跟抽象类有什么区别?
本帖最后由   米奇 于 2014-3-23 11:19 编辑

都在什么情况下使用呢?
作者: 也许依然    时间: 2014-3-23 00:20
抽象类和一般类没有太大的区别。
该如何描述事物,就如何描述事物,只不过该事物中出现了一些看不懂的东西。
这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体

抽象类比一般类多了抽象方法
抽象类不可以实例化

特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象

接口:初期理解,可以认为是一个特殊的抽象类
            当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示

class用于定义类
Interface用于定义接口

接口定义时,格式特点:
1,接口中常见定义:常量,抽象方法
2,接口中的成员都有固定修饰符
        常量:public static final
        方法:public abstract

接口是不能创建对象的,因为有抽象方法。
需要被子类实现,子类对抽象接口中的方法全部覆盖后,子类才可以实例化
否则子类是一个抽象类

接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。
作者: luoanjade    时间: 2014-3-23 01:43
接口是一个特殊的抽象类!
作者: 北极雪871208    时间: 2014-3-23 08:35
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
建议楼主多看两遍视频,慢慢就会理解了!加油!
作者: 橸瑩膤漃寞林    时间: 2014-3-23 10:08
抽象类的特点:
1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。因为调用抽象方法没意义。
4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
abstract class Student
{
        abstract final void study();


class ChongCiStudent extends Student
{
        void study()
        {
                System.out.println("chongci study");
        }
}


接口:初期理解,可以认为是一个特殊的抽象类
        当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。

接口:是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。
否则子类是一个抽象类。

interface Inter
{
        public static final int NUM = 3;
        public abstract void show();
}

interface InterA
{
        public abstract void show();
}

class Demo
{
        public void function(){}
}

class Test extends Demo implements Inter,InterA
{
        public void show(){}
}



作者: kuchan    时间: 2014-3-23 21:13
1变量     抽象类对变量无限制;接口中所有的变量必须是public static final
2构造方法   抽象类,子类通过构造方法链调用构造方法;接口没有构造方法
3方法    抽象类,无限制;接口,所有方法必须是公共的抽象实例方法
作者: kuchan    时间: 2014-3-23 21:17
抽象类和接口有一个共同特点:都不能使用new操作符实例化




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2