zoukankan      html  css  js  c++  java
  • 大数据学习--day10(继承-权限-super-final-多态-组合)

    继承-权限-super-final-多态-组合

    权限修饰符

        内容
            public
            protected
            default(不写就是它)
            private
        作用 : 
            修饰类    只可以 public default
            修饰方法
            修饰属性

    父类的属性 方法 子类都能拿到吗  ?
        可以
        虽然有权限的限制 , 但是不妨碍子类继承到 , 只是子类继承到了之后 没有权限使用
        原因如下

     

    父类 子类 构造器的执行顺序 

    当 new 一个类时 , 会先创建其父类的对象 先执行其父类的构造器  默认调用无参构造器, 
        如果父类还有父类 , 那么先创建父类的父类 先执行父类的父类的构造器    直至 Object
        // 父类对象作为 子类对象的内部对象存在  
        
        因此 所有类最好有一个公共的无参构造器 
        因为 其子类对象创建时 会默认的调用它的无参构造器 (除非另行指明有参的构造器)

     父类 子类内存图解

    super 关键字

        super.属性名  这是主动向上追溯 , 使用父类的 属性   
                    在子类和父类有同名属性时会这么用  
        super.方法名 这是主动向上追溯 ,使用父类的方法 
                    在子类和父类有同名方法时会这么用            
        super([实参]) 这是引用父类构造器
            如果在子类的构造器中 不去显示引用父类构造器 , 那么默认引用无参构造器
            如果要引用有参的构造器  , 那么可以 super(实参) 来引用
            
            super 在构造器中 必须位于第一行   所以 super this 在构造器中不能共存

    注意 :  super 不能出现在 static 成员里
    父类 子类如果定义相同的属性  该如何  ?
        父类和子类可以相同的属性
        如果 子类类型存储子类对象  , 那么使用的是子类的属性
        如果 父类类型存储子类对象  , 那么使用的是父类的属性
        以上 称为 静态绑定   属性是静态绑定的 -> 你的类型是谁的  用的就是谁的  
        
        父类和子类有相同的属性  在子类中  , 优先使用子类的属性
        使用 super.属性名 可以使用父类的属性  
        调用父类的 get  set 方法 , 修改的父类的属性  
        继承中  父类无法得到子类的东西   
        
        综上所述 : 
            不要定义相同的属性    太麻烦

    重写

            要求:
                1. 权限修饰符  大于等于父类的权限修饰符
                2. 返回值类型     要和父类一致
                        基本数据类型        完全和父类方法一致 
                        引用数据类型        小于等于父类的返回值类型
            
                3. 方法抛出的异常  必须小于等于父类方法抛出的异常  (异常)
    父类 和 子类有同样的方法  , 在子类的使用中  ,优先使用谁的 ?
            优先使用子类的方法
            使用 super.方法 可以用父类的方法
     
        父类和子类都有同样的方法 , 子类类型 存储 子类对象  , 调用的方法是 子类 的方法
        父类和子类都有同样的方法 , 父类类型 存储 子类对象  , 调用的方法是 子类 的方法
        在执行时 会确定这个对象的实际类型 , 按照实际类型来执行方法 (实际执行 默认执行自己的)
        以上叫做 动态绑定
        
        动态绑定  仅限于 非静态方法 。

        静态方法 仍然是 静态绑定 , 如果对象被父类变量存储  那么执行父类的静态方法

    final 关键字

        final 最终的 不变的 , 它是修饰符 , 它修饰的成员 都是最终的不变的 .   
        作用 : 
            1. 修饰类 最终的类
                     该类无法被继承   例如 String     
            2. 修饰方法 最终的方法
                     该方法无法被重写     
            3. 修饰属性     
                    该属性只要值确定了 那么值永不可变
                    该属性又被称为 常量 
                    
                    final 修饰的属性必须在声明时就赋值
                    否则 , 必须在每个构造器中 都对其进行赋值 
                    一定要保证 final 修饰的属性 在对象创建之后必定有值 
            
            4. 修饰局部变量
                    只要值确定了 那么值永不可变 也叫做常量

    多态

     一种指令 多种状态

    多态发生的三个基石
        1. 必须发生继承关系
        2. 必须有方法的重写  
        3. 父类引用指向子类对象  : 父类型的变量 存储的子类的对象  -- 实际执行的子类重写后的方法

    组合 

        可以被称为 面向对象的第四大特性

    就是相当于表的外键,关联另一张表

     
  • 相关阅读:
    礼品卡导入可用
    mysql
    初级运维工程师面试题总结
    mysql聚合函数
    去任何一个公司的思想
    mysql数据库引擎
    导入MyEclipse项目乱码
    poj 1743 后缀数组 求最长不重叠重复子串
    hdu 1011 树形dp+背包
    poj 2342 && hdu 1520 树形dp
  • 原文地址:https://www.cnblogs.com/symkmk123/p/9682987.html
Copyright © 2011-2022 走看看