黑马程序员技术交流社区

标题: 继承 [打印本页]

作者: uuyyio    时间: 2016-4-19 19:45
标题: 继承
继承 -- extends
        继承的好处和弊端:
       
                好处:
                        提高复用性。-- 子类可以使用父类的非私有成员
                        提高可维护性。
                        让类与类产生了一个关系,是多态的前提。
               
                弊端:
                        让类之间产生了一个强耦合的关系。
                       
                        名词解释:
                                耦合:类与类的依赖关系。
                                内聚:类自己完成一些功能的能力。
                       
                        java开发中原则:高内聚,低耦合。
               
        Java中类的继承特点:
                只允许单继承,不允许多继承,但是允许多层(多重)继承。
                        -- 避免了多继承中的调用不明确问题。
               
                学顶层:顶层定义的是体系的共性的内容。
                用底层:因为底层才是具体的实现,这里面的功能是最多的。
               
        什么时候使用继承:
                尽量不要为了使用部分功能而去使用继承,而继承体现的是“is a”的关系。
               
        使用继承的时候注意事项:
                继承只能继承父类中所有非私有的成员。
                继承不能继承构造方法,但可以使用super关键字访问父类的构造方法。
       
        继承中成员变量的关系:
                变量的使用:就近原则
                        局部 -- 成员 -- 父类 -- 报错。
       
        this和super关键字:
                this代表本类对象的引用。理解:谁来调用我,我就代表谁。
                super是一个关键字,代表父类在内存中的存储空间标识。(可以理解为父类对象的引用)
               
                super和this的用法相似:
                        a:成员变量
                                this.变量        --        使用本类的成员变量(也可以使用父类的成员变量,前提是子类中没有而且还得能继承下来)
                                super.变量        --        父类的成员变量
                        b:构造方法
                                this(...)        --        根据参数的匹配,调用本类的其他构造方法。
                                super(...)        --        根据参数的匹配,调用父类的某个构造方法
                                        -- 保证在子类初始化之前,先初始化父类的数据。
                                        -- 在子类的每一个构造方法中,第一行都有一条默认的语句super();
                                        -- 所有的类都直接或间接继承自Object类。Object类中只提供了无参构造。
                                       
                                        注意事项:
                                                this()和super()语句必须放在构造方法的第一行。
                                                如果父类不存在空参构造,可以:
                                                        使用super(参数。。。)调用父类的某个带参构造。
                                                        使用this(参数。。。)调用本类的某个带参构造,而根本原因就是我们想访问的那个构造能够访问父类的构造。
                                       
                        c:成员方法
                                this.方法名()        --        调用本类的其他方法       
                                super.方法名()        --        调用父类的方法
                               
       
        重载与重写:
                重载Overload:java允许在一个类中,多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载。与返回值类型无关。
                重写Override:
                        在子类中,方法声明(修饰符,返回值,方法名,参数列表)与父类相同的情况。目的是为了覆盖父类的方法主体或者对父类的方法做功能的扩展.
                       
                        访问权限修饰符:private 默认(什么也不写) protected public

                        注意事项:
                        a:父类中私有方法是不能被重写
                        b:子类重写父类的方法不能缩小父类的访问权限,不能抛出比父类更多的异常。
                        c:静态只能重写静态。(类的特点)






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2