黑马程序员技术交流社区

标题: 有个关于继承的小问题! [打印本页]

作者: 肖勇    时间: 2013-9-25 22:56
标题: 有个关于继承的小问题!
请问什么时候使用继承?继承有什么好处?在覆盖父类的时候应该注意什么?

作者: yting_xmei1129    时间: 2013-9-25 23:01
继承实际上是存在于面向对象程序设计中的两个类之间的一种关系,是面向对象程序设计方法的一个重要手段,通过继承可以更有效地组织程序结构,明确类间的关系,充分利用已有的类来完成更复杂、更深入的开发。

当一个类拥有另一个类的所有数据和操作时,就称这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称为子类。在Java语言程序设计类头定义中用extends表明子类与父类的继承关系。

在面向对象的程序设计中,采用继承的方式来组织设计系统中的类,可以提高程序的抽象程度,更接近人的思维方式,使程序结构更清晰并降低编码和维护的工作量。

单重继承是指任何一个类都只有一个单一的父类,其结构可以用单纯的树状结构来表示;而多重继承是指一个类可以有一个以上的父类,它的静态的数据属性和操作从所有这些父类中继承,其结构应以复杂的网状结构来表示。Java语言中仅支持单重继承,而多重继承是通过接口来实现的。

特别是多线程中会使用 继承 跟 实现接口了,建议去看看 多线程的视频

希望可以帮到楼主

The you smile until forever 、、、、、、、、、、、、、、、、、、、、、
作者: 暮雨    时间: 2013-9-25 23:21
  我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。  
  这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)
在java中 高内聚,低耦合。
继承就可以降低代码的耦合,这样编写代码,在你以后修改一处时,就不会牵扯很多的累,方便以后的修改和升级。仅供才考,还是希望你多理解。希望对你有帮助。
作者: 小痞痞    时间: 2013-9-25 23:26
继承就是对要描述的事物进行不断的向上抽取,就出现了体系结构。要了解这个体系结构中最共性的内容,就看最顶层的类。要使用这个体系的功能,就用最底层的类创建对象。
继承的好处:
                A:继承的出现,提高了代码的复用性。
                B:继承的出现,让类与类之间产生了关系,extends来表示,
                   这个关系的出现,为后面我们讲面向对象的第三个特点多态打下了基础。
特点java只支持单继承(其实确切的说是java对多继承进行了优化,避免了安全问题)。同时java支持多重(层)继承。
注意:
                A:子类可以直接访问父类中的非私有的属性和行为。
                B:不要仅为了获取其他类中部分功能而去继承。
                C:类与类之间要有所属( " is a " )关系,xx是一种xx
                        如何判断A和B是否有继承关系?
                        A如果继承B,那么就可以说A是B的一种。
覆盖时,子类方法权限一定要大于等于父类方法权限
静态只能覆盖静态

作者: 焦允    时间: 2013-9-25 23:50
继承是java语言中描述类与类之间关系的特性,当连个类存在“is a”的关系时,就可以使用使用继承,比如:学生 is a  人,这样学生类就可以经常人这个类,这是学生类被称为子类,人类是父类或基类。
好处:
1、提高代码的复用性。
2、让类与类之间产生关系。
子类中覆盖父类方法时,也叫重写,描述的是子类实例方法与父类实例方法的关系,指子类对父类中已有的实例方法进行重新定义。
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型。
       子类的方法返回值类型可以是父类方法返回值类型的子类。
       如果在子类中想调用父类中的那个被重写的方法,我们可以用super.方法的格式。
       如果直接调用方法,是在当前子类中先查找,如果子类有会调用子类的。使用super形式只在父类中查找,子类有没有都不调用。
    重写方法时,不能使用比父类中被重写的方法更严格的访问权限。
因为有可能将子类对象当做父类对象来使用,那么能获取到的父类对象中的方法在子类中必须都能获取到。
    重写方法时,不能比父类抛出更多的异常。
       子类只能比父类强,不能比父类弱。

静态方法的覆盖称为子类隐藏了父类的静态方法,而不是重写了父类方法
     父类的私有方法,子类是无法继承的,因此父类私有方法不能被重写
     实例方法在重写时不能添加static修饰符,静态方法被重新定义时不能定义为非静态的方法
作者: 黄炳期    时间: 2013-9-26 08:04
问题解决了的话,麻烦重新编辑帖子,修改主题至“已解决”
作者: 杨修    时间: 2013-9-26 09:26
好问题。。。。




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