您的位置:首页 > 编程语言 > Java开发

9. JavaSE-继承

2015-07-21 10:12 351 查看
面向对象的三个特性:
1. 封装(以对象的形式来体现)
2. 继承
3. 多态

继承的好处:
1. 提高代码的复用性2. 让类与类之间产生了关系,给 面向对象 的第三个特征多态提供前提。 Java中仅支持单继承,不支持多继承,但对C++中的多继承机制进行改良。 1. 单继承:一个子类仅有一个父类 2. 多继承:一个子类可以有多个直接父类 1)不直接支持,因为多个父类中有相同成员,会产生调用的不确定性 2)在java中是通过“多实现”的方式来体现Java支持多重继承。 当使用继承体系时;1. 查看该体系中的顶层类,了解该体系的基本功能2. 创建体系中的最子类对象,完成功能的使用 什么时候定义继承?1. 当类与类之间存在所属关系的时候,就定义继承(定义继承的时候,实际上是向上抽取分析的逆过程)2. 在子父类中,成员的特点体现:1). 成员变量 当本类的成员和局部变量同名时用this区分 当子父类中的成员变量同名用super区分父类 This和super用法很相似 This:代表一个本类对象的引用 Super:并不代表父类对象的引用,而是代表一个父类的空间2). 成员函数 当子父类中出现成员函数一模一样的情况,会运行子类的函数 这种现象,称为覆盖操作,这是函数在子父类中的特性 函数两个特性:重载 和 覆盖 重载:在同一个类中 覆盖:在子父类中,也称为重写 覆盖注意事项: 子类覆盖父类方法时,子类权限必须要大于或者等于父类的权限。 什么时候使用覆盖操作? 当对一个类进行子类的扩展时,子类需要保留父类的功能声明;但是要定义子类中 该功能的特有内容时,就使用覆盖操作完成。 class Phone { public void show() { System.out.println("number"); } public void call() { System.out.println("call"); } } class NewPhone extends Phone { public void show(String name) { System.out.println(name); super.show(); } } class PhoneDemo { public static void main(String[] args) { NewPhone p = new NewPhone(); p.show("keyman"); p.call(); //System.out.println("Hello World!"); } }3). 构造函数 在子类构造对象时,发现,访问子类构造函数时,父类也运行了。因为在子类的构造函 数中第一行有一个默认的隐式语句。Super(); 对于构造函数,不可能出现覆盖的情况,因为类名不可能重复,而构造函数的名称与类名
相同,因此构造函数不可能出现覆盖的情况。
本文出自 “Keyman” 博客,请务必保留此出处http://keyman.blog.51cto.com/9807984/1676618
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: