黑马程序员技术交流社区

标题: 问个继承,抽象,多继承与接口,多实现,多继承,多态... [打印本页]

作者: 王舜民    时间: 2012-9-4 07:15
标题: 问个继承,抽象,多继承与接口,多实现,多继承,多态...
本帖最后由 王舜民 于 2012-9-5 08:23 编辑

最好有个关系图。
听了老师讲的都晕了。

接口是不可以创建对象的,就相当于是抽象的特殊表达形式

抽象类有单继承的局限性,接口没有,抽象类有的是单继承的什么局限性?设a 是父类 是这个?只能d extends c   c extends b   b extends a  
java只能单继承 但是可以多实现!继承是指继承某个类,实现是指实现某个接口
因为继承不能真的多继承,有了接口的多实现
多态的前提:
1、必须要有关系:继承、实现。
2、必须有覆盖的操作。

我现在就是不能整合在一起,能给讲讲之间的脉络和主体么?
作者: 李志群    时间: 2012-9-4 07:36
第一个问题:多实现和多继承的区别?
在继承中:一个父类可以有多个子类,而一个子类只能有一个父类。在java继承中不允许多继承,就好比一个爹可以有很多儿子,而一个儿子只能有一个爹。
在接口中:可以实现多继承。
多继承里面有不确定性。
抽象类和接口的区别?
第二个问题:接口和抽象类的区别:
1,类是用来继承的,只能单继承。
接口是用来实现的,可以多实现。
2,类中可以定义非抽象内容,直接提供给子类使用。
接口中只能定义抽象方法,需要子类全部实现。
3,类存在着继承关系,是 is a  所属关系。
接口的实现关系,是 like a像什么的关系。
区别:抽象类定义的是基本共性内容。
接口实现的是额外拓展内容。
抽象类和接口:在不同的问题领域中分析问题的也有不同。
第三个问题:多态的体现,前提,好处,弊端。
体现:
父类引用指向子类对象

多态的前提:
1,必须存在着继承关系,(或者接口的形式)。
2,通常要有覆盖操作。
多态:简单的理解多种形态。
  多态性在程序中的体现:
  就是:父类或者接口的引用指向自己的子类对象。这就是多态。

好处:
  提高代码的扩展性。
弊端:  只能使用父类的引用访问父类成员。(前期建立父类的引用,虽然可以接收后期所有该类的子类对象,但是只能使用父类中的功能,
      不能使用子类中的特有功能,因为前期的程序无法知道后期的子类的特有内容的)
    但是:前期的程序可以使用子类覆盖了父类的方法的内容。
第五个:多态的转型什么时候使用?这个貌似是重点 多态中的哦。
向上: 可以隐藏具体类型。例如动物的例子。以后面对的就不在是猫了,面对的是动物了。
当需要对程序进行扩展的时候。或者限定子类特有的方法的操作的时候,使用向上转型,操作其父类。
向下:
使用子类的特有内容。一定要做的是健壮性的判断。

希望楼主采纳呵呵



作者: 王舜民    时间: 2012-9-4 08:14
李志群 发表于 2012-9-4 07:36
第一个问题:多实现和多继承的区别?
在继承中:一个父类可以有多个子类,而一个子类只能有一个父类。在jav ...

亚历山大。。。
作者: 李志群    时间: 2012-9-4 11:23
王舜民 发表于 2012-9-4 08:14
亚历山大。。。

呵呵 谢谢采纳呵呵
作者: 魏-玉-彪    时间: 2012-9-5 07:40
本帖最后由 魏-玉-彪 于 2012-9-5 07:50 编辑

看楼下回答
  



作者: 魏-玉-彪    时间: 2012-9-5 07:41
继承:就是子类有了父类的属性、方法或者说变量与函数。
     比如 Class B extends A //假如类A中有很多方法与变量,只要B extends A了,B 中就有了A中的方法与变量,而且B还可以改变这些方法与属性,还可以定义自己的方法和属性。
  继承描述的是类与类之间的关系,多继承的意思是,一个子类同时继承多个父类,一个儿子多个爹,通常认为,Java中是不允许多继承的。但JAVA中没有多继承,而用接口实现了多继承!

抽象:就是不具体,没有方法体的方法称为抽象方法,抽象方法必须放在抽象类中,但是抽类中可以有具体方法,也就是正常的、有方法体的、有大花括号的方法。使用abstract关键字修饰

接口:可以认为是一种特殊的抽象类,接口中声明的所有方法都是抽象的,所有的变量都是 final类型的。使用interface关键字修饰一个接口,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。


实现:实现描述的是类与接口之间的关系,一个类实现一个接口就是指这个非抽象类覆写接口中定义的所有方法,多实现就是指一个子类可以实现多个接口,也就是说一个学生可以有多个老师,Java中支持多实现。   一个类或是可以同时实现多个接口!(就相当于C++里一个类同时继承了多个类!) 实现也可以理解为,一个类继承了一个接口。所以从某中意义上讲,Java也可以多继承,但仅限于接口。

多态:多态字面上的意思就是某一类事物存在多种体现形态,多态的体现在,父类的引用指向了自己的子类对象,父类的引用也可以接收自己的子类对象。
  当我们创建一个子类对象时,也可以用这个子类对象的父类来表示,
  比如:
   Class B extends A ;
  {……}
     ……
  A fu = new B();
    ……
  或 Class C implements A;
  {……}
  ……
  A fu =new C();
  ……







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