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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

适当加些代码举例可以吗?

14 个回复

倒序浏览
抽象类和接口的相同和异同点  声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。  在编写对象的时候会对一些类的方法进行定义。但是并没有具体的实现。而是把它们放到子类中去实现,具有灵活性。在抽象类中可以有抽象方法,也可以没有抽象方法。但是有了抽象方法的类一定是抽象类。  抽象类和接口在JAVA中都是用来表述抽象类的。  在面向对象的概念,所以的对象都是通过类来描述的。但反之则不行。若是一个类中没有包含足够的信息描绘一个具体的对象,这个的类就是抽象类。  在JAVA中除了使用抽象类来实现一定程度的抽象外还可以定义一种特殊的抽象方法----接口(interface)。和抽象类的方法不一样,在抽象类中需要加上关键字abstract来表明某个方法是抽象的,但是在接口中则不需要。     相同点:  1.他们都能不能生成实例,都有抽象方法。 2接口是特殊的抽象类。  3.接口和抽象类的继承都使用的关键字是extends。     不同点:  1.接口的定义的变量默认是public static final型,且必须给其赋初值。所以在实现类中不能重新定义,也不能改变其值。而在抽象类中其值在子类中可以重新定义也可以重新赋值。  2.接口的方法默认的都是public abstract类型的。  3.抽象类中可以有构造器,但是接口中除了抽象方法什么都没有。 4.名字不同,接口写的是public interface  Shape{}; 而抽象类写的是public  abstract class Shape{};  接口里全部都是抽象方法。而抽象类里可以有抽象方法也可以有其他的方法。接口里的属性都是静态的。但是抽象类的属性可以是任意的。  5.还可以从继承的角度看,接口可以多继承,一个接口可以继承多个接口。但是抽象类却不能,只能是继承一个父类,不能继承多个父类。要是能继承多个父类的话会在父类和子类的方法中有发生冲突。
回复 使用道具 举报
二楼这是从哪复制过的,你说这么一堆,估计楼主还是看不懂的说。我的建议是把视频多看几遍,多写几遍代码应该差不多
回复 使用道具 举报
本帖最后由 刘瑞 于 2014-7-30 01:19 编辑

相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。不同点 :接口支持多实现 ;抽象类不能实现多继承。 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
回复 使用道具 举报
当一个抽象类里面全都都是抽象方法(abstract修饰)的时候,它就是接口,接口是一种特殊的抽象类。
他们都不能被直接创建实例,因为都是抽象的,只有通过 子类重写里面的抽象方法,然后子类才可以创建实例;接口里的成员都是public权限,类可以通过同时实现(implements)多个接口即多实现来完成另一种形式的多继承
回复 使用道具 举报
刘瑞 发表于 2014-7-30 01:13
相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。不同点 :接口支持多实现 ;抽象类不能实现多 ...

这个 靠谱
回复 使用道具 举报
蔡爽 发表于 2014-7-29 15:00
抽象类和接口的相同和异同点  声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创 ...

0,0 每次看你发这么多。是自己打的么。
下次记得还是"\r\n"
回复 使用道具 举报
接口就是一种抽象类。抽象类可以有自己的方法。但接口里定义都是抽象方法,没有具体实现,它都是在子类中实现的方法。一个接口要是有了自己的方法,那就不叫接口了,叫抽象类了。我是这么理解的。
回复 使用道具 举报
晓风 中级黑马 2014-7-30 10:02:35
9#
相似点:一,抽象类和接口都是对具体事物的不断的抽象;二,抽象类和抽象接口不能实例化;
回复 使用道具 举报

相似点:
   一,抽象类和接口都是对具体事物的不断的抽象;
   二,抽象类和抽象接口不能实例化;
   三,抽象类和抽象接口的实例化方式有两种:
         1,通过匿名内部类,将抽象方法全部实现来实例化;
         2,通过子类实例化。
         示例:      
//接口A
interface A{
        void showA();
}
//抽象类B
abstract class B{
        abstract void showB();
}
//类C继承类B,实现接口B
class C extends B implements A{

        @Override
        public void showA() {
                // TODO Auto-generated method stub
               
        }

        @Override
        void showB() {
                // TODO Auto-generated method stub
               
        }
       
}
class D{
        public void imp() {
                //通过匿名内部类实例化
                A a1 = new A(){
                        public void showA(){}
                };
                //通过匿名内部类实例化
                B b1 = new B(){
                        public void showB(){}
                };
                //通过子类实例化
                A a = new C();
                //通过实现类实例化
                B b = new C();
        }
}


不同点:
   一,抽象类和普通类一样,只是多了抽象方法;接口只能有公共的静态常量成员和公共的抽象方法。没有              构造函数。
   二,一个类只能继承一个抽象类,但可以实现多个接口;
   三,一个抽象类只能继承一个类,但一个接口可以继承多个接口。
回复 使用道具 举报
masai158 发表于 2014-7-30 08:46
0,0 每次看你发这么多。是自己打的么。
下次记得还是"\r\n"

哦哦,忘了写转自哪了:(,不好意思
回复 使用道具 举报
通常来说,这些回答在java8之前的版本是对的。java8的新特性中对接口进行了修改,使得接口中也能实现静态方法了。
回复 使用道具 举报
小乖乖灬浩歌 来自手机 中级黑马 2014-7-30 13:00:30
13#
刘瑞 发表于 2014-7-30 01:13
相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。不同点 :接口支持多实现 ;抽象类不能实现多 ...

楼上的正解
回复 使用道具 举报
接口是一个特殊抽象类,里面方法都是抽象的,而抽象类里面可以有非抽象方法
回复 使用道具 举报
LFW 中级黑马 2014-7-30 19:43:38
15#
刚刚才敲完这些话。。。抽象类的描述跟普通类的区别就是,抽象类中可以定义抽象方法(反过来,抽象方法必须放在抽象类中)。接口则是特殊的抽象类,跟抽象类最大的不同(个人“总结”),是接口中不能定义普通方法,清一色的抽象方法,其中定义的成员变量也都是全局常量(public static final)。抽象类是一种模板,继承抽象类的子类只要去改造、拓展模板就能实现自己的功能。接口则是一种公共行为规范(所以定义的变量都只能是常量),是一个总纲,规定了实现类必须要重写的方法,就毕老师的视频里说的,只要是声卡网卡就要实现我的PCI接口,也就是遵循PCI规范。另外抽象类可以有构造函数,给子类super调用的,而接口是没有构造函数的。还有些细节我也记不住。我不是大神,我是菜鸟。大神看到我说的不对的,请务必帮忙改正
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马