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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈郊 中级黑马   /  2012-10-4 09:57  /  1154 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

6.继承
实现java中怎样实现继承 通过一个关键字  extends
格式
       class子类  extends 父类{
                                  }
              超类 基类   父类都是同一个意思
              通过继承,子类自动拥有父类的所有成员(成员方法 ,成员属性)
继承的作用
              1.提高了代码的复用性
              2.通过继承,让我们子类与父类之间存在了关系,就是我们面向对象语言中第三个基本特征多态的一个前提。简单说,就是继承会产生多态
java中只支持单继承
              class A{}
              classB{}
              classc extends A,B
这种是不可以的,java中存在单继承,一个子类只能继承一个父类,一个父类可以派生出多个子类。简单说,一个儿子只能有一个爹.一个爹可以有多个儿子.
              通过这种继承关系,也就说明C类中包含了B,A中所有的成员.
       java中为什么没有多继承
              这时在C类中是继承A中的show,还是B中的show,这个概念比较模糊,所以java为了避免这种情况出现,不允许多继承.
怎样去学习与使用一个继承体系
              大家在以后的开发中使用类时,会发现它存在一个体系。那在这时,我们怎样去使用这个体系?  最外层的一般都是定义的公共的行为 ,我们去查看最顶层的类就可以了解整个体系的公有的行为。 在使用时应该使用最底层这些子类。因为最底层都具有自己独特的行为,可以根据我们的需求来  使用不同的底层类.
什么情况下去使用继承
              继承可以简单理解是 is 关系
               ,狗是不是动物  动物类    有两个子类  狗类   猫类
              苹果,香蕉,鸭梨 都是水果   水果类   有三个子类  苹果类,香蕉类,鸭梨类
              不要为了获得某个类中的某个方法,某几个属性,就使用继承。如果你发现当前这个类可是说成是另一个类,那么这时候你就可以使用继承。在父类private修饰的成员不可以被子类继承或者可以这样理解,可以被继承但是不能在子类中使用。
继承中的成员属性特点
              如果想要在子类得到被子类隐藏的属性或方法,我们可以使用super这样关键字来    得到被子类隐藏的父类的属性与方法。
继承中的方法
              方法的重写(覆盖)----->大子类中有一个与父类中一样的方法,这时就说子类中的这个方法将父类中的方法进行了(覆盖)重写。
       重写(覆盖):一定父类,子类中才能出现
       重载: 一个类中有相同的方法名  参数的个数  类型,排列顺序
重写有什么作用
              1.可以将父类中的行为进行完全的改变,子类可以进行扩展
              2.可以对父类中的行为进行扩展(这种操作我们在开发常用)
为什么要使用重写?
              使用重写可以提高开发效率,节省代码.
覆盖注意事项:
              覆盖时,子类方法权限一定要大于等于父类方法权限
              静态只能覆盖静态。
覆盖的应用:
              当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
重写与重载的区别
       重载 :在一个类中,有相同的方法名,方法的参数个数,类型,排列顺序不现可以形成重载
       重写(覆盖):在子类中有一个与父类一样的方法,这时子类中的方法重写了父类中的方法
       如果父类中没有无参构造,那么子类想要实例化对象,必须指定通过父类的哪个构造方法去实例化.
       this([参数])
       super([参数])
       这两种情况只能出现在构造方法中,并且它代表的是执行某个构造
       this([参数])就执行本类构造
       super([参数]) 就执行父类构造
       this.属性  方法
       super.属性 方法
       上面这两种情况 thissuper都是指代对象  它可以出现在实例方法与构造方法
       this()这种情况出现必须是第一句
       super()出现也必须是第一句
       this()super()这种情况只能出现一个,并且都得是第一句。
为什么super()必须是第一句?
              super()出现在子类的构造方法中,子类对象在创建的过程中,需要父类中的属性支持,那么必须先去加载父类。

评分

参与人数 1技术分 +1 收起 理由
王海宇 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马