Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69966
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-27 15:04
个人简介

记录,分享

文章分类

全部博文(43)

文章存档

2017年(24)

2015年(1)

2014年(18)

我的朋友

分类: Java

2014-06-27 16:25:44

一、语法

1.
  • 子类和父类位于同一个包中:子类继承父类的public,protected和默认访问级别的成员变量及成员方法
  • 位于不同包中:子类继承父类public和protected的成员变量和方法
2.java不支持多继承,一个类只能直接继承一个类

二、方法重载(Overload)

重载方法必须满足的条件:
  • 方法名必须相同
  • 方法的参数类型、参数个数、参数顺序至少有一项不同
  • 方法的返回类型可以不相同
  • 方法的修饰符可以不相同
三、方法覆盖(Override)

覆盖必须满足的约束:
  • 子类方法的名称、参数签名和返回类型必须与父类方法一致。
  • 子类方法不能缩小父类方法的访问权限。    why?假设可以缩小,Sub类覆盖了Base类的method方法并将访问权限缩小为private,根据java的多态机制,Base base = new Sub(); base.method(); 是允许的,显然这与method的权限相矛盾。
  • 子类方法不能抛出比父类方法更多的异常。     why?与java多态机制相冲突,声明为父类的子类对象在调用覆盖方法时可能会有异常无法捕捉到,所以java禁止子类方法抛更多的异常。
  • 父类的静态方法不能被子类覆盖为非静态方法,覆盖规则与上述三条相同。父类的非静态方法也不能被覆盖为静态方法。
  • 父类的抽象方法可以通过两种方式被覆盖:a. 子类实现父类的抽象方法。b. 子类重新声明父类的抽象方法
  • 父类的非抽象方法可以被覆盖为抽象方法。
四、super关键字

使用super关键字可以使父类的被屏蔽方法或变量在子类中变得可见。以下场合会出现父类方法或变量被子类屏蔽的现象
  • 子类覆盖了父类的某个方法,则在子类范围内,父类的此方法不可见。
  • 子类中定义了和父类同名的成员变量时,则在子类范围内,父类的该成员变量不可见
在程序中,以下情况会使用super关键字
  • 在子类的构造方法中,使用super调用父类的构造方法
  • 在子类中访问父类被屏蔽的方法和属性
注:即使子类没有通过super显式调用父类构造器,虚拟机仍会在子类构造器调用前隐式调用父类无参构造器一次。

五、继承的弊端与使用原则
阅读(577) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~