黑马程序员技术交流社区

标题: java基础知识-继承和多态的相关知识及注意问题 [打印本页]

作者: 凤凰城nash    时间: 2015-12-24 10:09
标题: java基础知识-继承和多态的相关知识及注意问题
本帖最后由 凤凰城nash 于 2015-12-25 22:17 编辑

* 继承
                ** 格式:        class 子类名 extends 父类名 {}
                ** 特点:
                        * 在java语言中只支持单继承不支持多继承
                        * 在java语言中支持多层继承
                ** 注意事项:                        * 子类只能继承父类中非私有的成员
                        * 父类中的构造方法,子类不能继承,但是可以通过super去访问父类的构造方法
                        * 不要为了某一些功能去使用继承
                               class A {
                                        public void show1(){}
                                        public void show2(){}
                                }
                               class B {
                                        public void show2(){}
                                        public void show3(){}
                                }
                              class B extends A {
                                        public void show3(){}
                                }
                        
                        什么时候去使用继承?
                          继承体现的是一个"is a"的关系                       
                            举例:        
                                        动物
                                                猫
                                                狗
               
                ** 继承的好处:
                        * 提高了代码的复用性
                        * 提高了代码的维护性
                        * 让类和类产生了关系,是多态的前提
            
                ** 继承的弊端: 增强了耦合性
                        开发原则: 高内聚 , 低耦合
                       内聚: 就是某一个类完成某一件事情的能力
                        耦合: 类和类之间的关系

                ** 继承中的成员访问问题:
                        * 成员变量
                            变量的访问遵循一个"就近原则"

                                查找顺序:
                                        a: 在子类局部位置查找
                                        b: 在子类的成员位置查找
                                        c: 在父类中的成员位置查找
                                        d: 就报错了

                                this 和 super 的区别:
                                        this : 表示的是本来对象的一个引用 , 谁调用我,我就代表谁
                                        super: 表示的是父类存储空间的一个标示(理解: 可以认为其实就是父类对象的一个引用)

                                this 和 super 访问成员的格式
                                        * 成员变量
                                                this.变量名                                访问本类的成员变量
                                                super.变量名                        访问父类的成员变量
                                        * 构造方法
                                                this(...)                                访问的是本类中的构造方法
                                                super(...)                                访问的是父类中的构造方法
                                        * 成员方法
                                                this.方法名(...)                访问的是本类中的成员方法
                                                super.方法名(...)                访问的是父类中的成员方法

                        * 构造方法:
                             ** 子类在初始化的时候都需要默认调用父类中无参的构造方法,完成父类数据的初始化
                                ** 其实每一个构造方法的第一条语句默认就是 super() ;
                             class Student {
                                     public Student(){
                                                super() ;
                                        }
                              }

                                ** this(...)和 super(...) 必须是构造方法的第一条语句
                                
                        * 成员方法
                                   查找顺序:
                                        a: 在子类的成员位置查找
                                        b: 在父类的成员位置查找
                                        c: 就报错了







作者: 凤凰城nash    时间: 2015-12-24 10:11
本帖最后由 凤凰城nash 于 2015-12-25 22:28 编辑

有不足的地方希望大家指出,共同学习进步
作者: 马赛    时间: 2015-12-24 16:54
{:5_275:
作者: 王如是    时间: 2015-12-24 21:03
黑马威武
作者: anuo    时间: 2015-12-24 21:26
今天听同学说到后期会继承来继承去,乱的跟一锅粥样
作者: 凤凰城nash    时间: 2015-12-24 22:47
anuo 发表于 2015-12-24 21:26
今天听同学说到后期会继承来继承去,乱的跟一锅粥样

其实也没有那么难,只要记住关键的问题就好
作者: mmxcf1    时间: 2015-12-25 16:28
感觉不错、
作者: 一大把手    时间: 2015-12-25 16:40
总结的不错
作者: 凤凰城nash    时间: 2015-12-25 22:16
* 多态
               
     * 概述:        就是同一个事物在不同时刻表现出来的不同状态
     * 前提:
                                
           ** 继承关系
           ** 方法重写
           ** 父类的引用指向子类对象
               
    * 多态的成员访问问题
               
          ** 成员变量:        编译看左边 , 运行看左边
          ** 构造方法:        子类在初始化的时候,都默认的要调用父类无参的构造方法,对父类数据进行初始化
          ** 成员方法:        
                                
                   * 静态成员方法                编译看左边 ,运行看左边
                   * 静态成员方法        编译看左边 ,运行看右边

      * 多态的好处:
              ** 提高的代码的维护性
               ** 提高了代码的扩展性
               

      * 多态的弊端: 多态的形式不能访问子类特有的功能
      
       * 如果我们想访问子类特有的功能,需要向下转型
              向下转型: 就是把父类的引用强制转换成子类的引用                格式:  子类 对象名 = (子类)父类的引用 ;
              向上转型: 就是父类的引用指向子类对象






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