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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖勇 中级黑马   /  2013-9-25 22:56  /  1872 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问什么时候使用继承?继承有什么好处?在覆盖父类的时候应该注意什么?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

6 个回复

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

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

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

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

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

希望可以帮到楼主

The you smile until forever 、、、、、、、、、、、、、、、、、、、、、

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
  我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。  
  这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)
在java中 高内聚,低耦合。
继承就可以降低代码的耦合,这样编写代码,在你以后修改一处时,就不会牵扯很多的累,方便以后的修改和升级。仅供才考,还是希望你多理解。希望对你有帮助。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 很给力!

查看全部评分

回复 使用道具 举报
继承就是对要描述的事物进行不断的向上抽取,就出现了体系结构。要了解这个体系结构中最共性的内容,就看最顶层的类。要使用这个体系的功能,就用最底层的类创建对象。
继承的好处:
                A:继承的出现,提高了代码的复用性。
                B:继承的出现,让类与类之间产生了关系,extends来表示,
                   这个关系的出现,为后面我们讲面向对象的第三个特点多态打下了基础。
特点java只支持单继承(其实确切的说是java对多继承进行了优化,避免了安全问题)。同时java支持多重(层)继承。
注意:
                A:子类可以直接访问父类中的非私有的属性和行为。
                B:不要仅为了获取其他类中部分功能而去继承。
                C:类与类之间要有所属( " is a " )关系,xx是一种xx
                        如何判断A和B是否有继承关系?
                        A如果继承B,那么就可以说A是B的一种。
覆盖时,子类方法权限一定要大于等于父类方法权限
静态只能覆盖静态

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 赞一个!

查看全部评分

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

静态方法的覆盖称为子类隐藏了父类的静态方法,而不是重写了父类方法
     父类的私有方法,子类是无法继承的,因此父类私有方法不能被重写
     实例方法在重写时不能添加static修饰符,静态方法被重新定义时不能定义为非静态的方法

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 很给力!

查看全部评分

回复 使用道具 举报
问题解决了的话,麻烦重新编辑帖子,修改主题至“已解决”
回复 使用道具 举报
杨修 中级黑马 2013-9-26 09:26:41
7#
好问题。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马