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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lucascgz 中级黑马   /  2015-12-11 22:54  /  707 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

继承 inherit/inheritance
--------------------------------------------------------------------------------
继承建立的思考过程:
        父类是从子类中逐步抽取而来的, 而子类是从对象中逐步抽取而来的
        虽然事实上先有父类才有子类.

继承好处:
        1. 提高代码复用性和维护性
        2. 让类与类之间产生关系, 有了这个关系, 才有多态特性
                即继承是多态的基础

设计继承的基本要求(判断继承是否合适):
        子类继承父类后不存在多余成员
        因为: 多余成员没有任何用处, 反而使得程序阅读性变差.

        千万不要为了获取其他类的功能而继承
        必须是类与类之间存在所属关系时才可以继承
        所属关系为 is a, 即子类 is a 父类. 如学生(Student)是一个人(Person)

Java 只支持类的单继承, 不支持多继承
        因为多继承容易带来安全隐患:
                当多个类中定义了相同功能但功能体不同时, 子类对象不确定到底要运行哪一个.
        虽然不支持类的多继承, 但是 Java 保留了这种机制, 其表现形式为多实现.

Java 支持类的多层继承
        也就是一个继承体系

        如何使用一个继承体系中的功能呢?
                一句话, 查阅父类功能, 创建子类对象使用该功能!!!
--------------------------------------------------------------------------------
子父类中变量的特点
        子父类中出现同名变量时,
        子类使用"this.变量名"访问本类的变量, 使用"super.变量名"访问父类的变量

        同名类变量应采用"类名.变量名"的访问方式


子父类中方法的特点 - 覆盖 override
        函数的覆盖特性, 便于实现函数功能的扩展(提高程序的扩展性)

        覆盖时, 子类可通过 super 语句调用父类同名函数继承其已实现功能, 避免重复编写.

        override 的注意事项:
                1. 父类函数权限不为 private
                2. 子类函数权限必须大于父类函数权限, 否则编译失败
                3. 子类方法 throws 子句抛出的异常只能是父类方法 throws 子句抛出异常的子集
                4. 构造器可重载, 不能覆盖
       
        override 和 overload 比较
                override: 要求子父类方法签名必须一模一样(包括方法名, 参数列表和返回值类型)
                        方法签名不包含返回值类型的!!!
                        子类返回值类型可以是父类返回值类型的子类型
                重载: 只看同名函数的参数列表


子父类中构造器的特点
        ***在对子类对象进行初始化的过程, 父类构造器也会运行.
        那是因为子类的构造器默认第一行有一条隐式的 super() 语句;
        super(): 会访问父类中空参数的构造器, 而且子类中所有构造器默认第一行都是 super();
--------------------------------------------------------------------------------

0 个回复

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