您的位置:首页 > 职场人生

黑马程序员_Java 中的继承与多态

2013-10-17 13:13 218 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

一、继承的定义

类具有继承性,子类对父类的继承关系体现了特殊和一般的关系。通过继承可以更有效地组织程序结构,明确类间关系,并充分利用已有的类来完成更复杂、深入的开发。子类继承父类中一切非private 修饰的属性和方法。
Java 中的所有类都是java.lang.Object 类的子类,类的继承使用extends 关键字。
继承类的定义格式:
class <子类> extends <唯一的父类名>
{
<类定义体>
}
例:
class A {
...
}
class B extends A {
...
}

二、super 关键字

数据成员的隐藏:
数据成员的隐藏是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个相同名字的数据成员,一个是继承父类的,另一个是自己定义的。当子类引用这个透明的数据成员时,默认操作的是他自己定义的数据成员,父类那里继承来的数据成员被隐藏。当子类要操作继承自父类的同名数据成员时,可使用关键字super引导。

成员方法的重写:
子类可以重新定义与父类格式完全相同(包括方法名、方法形参的个数和类型、方法返回值的类型)的成员方法,实现对父类方法的覆盖(即重写)。只有当实例方法能被访问时,才能进行方法重写。私有方法不能被重写。
静态方法(类方法static)能被继承,但不能被覆盖。如果重写,则父类的静态方法被隐藏。子类在重新定义父类已有的方法时,应保持与父类完全相同的方法名、返回值类型和参数列表,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关(这种情况属于方法的重载)。

super 关键字的作用:
super 关键字与this 关键字类似,表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。super 的使用方法有三种:
(1) 访问直接父类隐藏的数据成员,其使用形式为:
super.数据成员
(2) 调用直接父类中被覆盖的成员方法,其使用形式如下:
super.成员方法(参数)
(3) 调用直接父类的构造方法,其使用形式如下:
super(参数)

注:用final 修饰成员方法,表示此方法不能被它的子类覆盖。

三、多态:

多态是面向对象程序设计语言的一个重要特性,在Java 中,可以在同一类或不同类中定义名称相同但是操作不同的多个方法,多态性指的是运行时判断应该执行哪个方法代码的能力,这种能力也叫动态绑定。
在Java 语言中,多态性分为编译时多态性和运行时多态性。
编译时的多态性是通过方法重载实现的,Java 虚拟机根据传递给方法的参数个数和类型决定调用哪个重载方法。
运行时的多态性是Java 多态性的最重要的体现,在Java 语言的继承关系中,子类对象可以作为父类对象来使用。一个对象可以通过引用子类的实例来调用子类的方法,通常,方法在父类中定义,在子类中覆盖,子类中调用哪个方法是在运行时决定的,取决于对象的类型,称为运行时的多态性。

四、方法的重载:

在java 中,同一个类中的2 个或2 个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ),这个过程称为方法重载(method overloading )。方法重载是java 实现多态性的一种方式。方法重载是Java 最激动人心和最有用的特性之一。
当一个重载方法被调用时,java 用参数的类型和(或)数量来表明实际调用的重载方法的版本。因此,每个重载方法的参数的类型和(或)数量必须是不同的。虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: