黑马程序员技术交流社区

标题: 继承父类(extends)和实现接口(implements)有什么本质的区别呢? [打印本页]

作者: 欧阳才志    时间: 2012-4-12 16:31
标题: 继承父类(extends)和实现接口(implements)有什么本质的区别呢?
//
abstract class student
{
        abstract void study();
        void sleep()
        {
                System.out.println("sleep");
        }
}//定义一个人类
interface smoking
{
        void smoke();
}//定义一个抽烟接口

class zhangsan extends student implements smoking
//实现接口和继承父类本质有啥区别啊?{
        void study(){}
        public void smoke()
               
        {
                System.out.print("smoking");
        }
       
}//张三个烟人不单是人而且抽烟
class  jiekou1
{
        public static void main(String[] args)
        {
                zhangsan zs=new zhangsan();
                zs.smoke();
        }
}
作者: 赵云柯    时间: 2012-4-12 16:41
继承关系要求所有子类都要具备父类定义的功能。比如初中生和高中生都是学生类的子类,那么它们都有学习和睡觉的功能。
而接口可以定义一些额外的功能。比如学生类的这两个子类中,初中生不抽烟,就不需要实现抽烟的接口;高中生抽烟,就可以实现抽烟的接口。
另外,这个抽烟的接口还可以被其它与学生类无关的类(比如工人类,运动员类等)实现。
作者: 白潇    时间: 2012-4-12 16:47
其实都是来获取 父类/接口中的方法 java是不能多继承的 一个类只能有一个父类
但可以实现许多接口 这也是java面向对象的思想
  而且写在接口中的变量都是static的
作者: 未长法    时间: 2012-4-12 16:59

1. 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。
extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用
2.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了
作者: 薛飞飞    时间: 2012-4-12 17:01
最本质的区别是一个类只能继承一个类,但一个类可以实现多个接口!
继承和接口可以实现一样的功能,只是接口比继承具有更强的灵活性,能避免继承体系的臃肿。
作者: τ、高童鞋ゝ    时间: 2012-4-12 17:16
在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。
extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用
extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了
例如:class A extends B implements C,D,E


作者: 高铭    时间: 2012-4-12 18:16
继承和多态都是为了更好的实现多态,两者可以单独使用也可以一起使用,
继承父类,可以继承父类的方法,可以继承完,也可以有选择性的继承,当然抽象方法必须被继承。合理的使用继承可以减少很多代码的编写,因为父类已经实现过的方法,你不用在去写了,这样会省下很大一部分时间。
接口:接口里面的方法一般是空方法,而且实现该接口的方法必须实现接口里的所有方法,接口的作用往往是为了方便多个人协同编码工作的时候,例如:A,B,C一起工作,他们分别负责不同的模块,A和B写代码比较快,C写代码很慢,这样就有问题了,因为当A和B要用到C负责的模块里的方法的时候,由于C还没写好,A和B就不能继续工作了,这样就很影响工作效率,所以A和B就告诉C,让C写个接口,里面声明好一些A,B需要的,但是C还没写好的方法,这样他们的工作可以继续,等C完成了工作之后接着去实现该接口。





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