继承-权限-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. 父类引用指向子类对象  : 父类型的变量 存储的子类的对象  -- 实际执行的子类重写后的方法

组合 

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

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

 

大数据学习--day10(继承-权限-super-final-多态-组合)的更多相关文章

  1. 大数据学习笔记——Java篇之集合框架(ArrayList)

    Java集合框架学习笔记 1. Java集合框架中各接口或子类的继承以及实现关系图: 2. 数组和集合类的区别整理: 数组: 1. 长度是固定的 2. 既可以存放基本数据类型又可以存放引用数据类型 3 ...

  2. java 与大数据学习较好的网站

    C# C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!https://www.cnblogs.com/doforfuture/p/6293926.html ...

  3. 大数据学习笔记——Hadoop编程实战之HDFS

    HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...

  4. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  5. 大数据学习系列之五 ----- Hive整合HBase图文详解

    引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...

  6. 大数据学习系列之六 ----- Hadoop+Spark环境搭建

    引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...

  7. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  8. 大数据学习之Linux进阶02

    大数据学习之Linux进阶 1-> 配置IP 1)修改配置文件 vi /sysconfig/network-scripts/ifcfg-eno16777736 2)注释掉dhcp #BOOTPR ...

  9. 大数据学习系列之—HBASE

    hadoop生态系统 zookeeper负责协调 hbase必须依赖zookeeper flume 日志工具 sqoop 负责 hdfs dbms 数据转换 数据到关系型数据库转换 大数据学习群119 ...

随机推荐

  1. c# 依赖注入之---反射(转)

    详细请看http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html 定义一个接口,和两个类(实现该接口) IButton: using ...

  2. git下的团队合作模型及git基础知识汇集

    https://www.atlassian.com/git/tutorials/syncing/git-fetch Syncing svn使用单个中央库来作为开发者之间沟通的桥梁,而协同合作是通过在开 ...

  3. java通过jxls框架实现导入导出excel

    //使用jxls报表生成工具,把java实体类导出生成 Excel文件或导入 Excel 插入数据库 02 03//读取04 05public class ReadExcel {06 private ...

  4. asmlinkage的作用

    本文转载自:http://blog.chinaunix.net/uid-24945116-id-83893.html 学习啦! asmlinkage是个宏,使用它是为了保持参数在stack中.因为从汇 ...

  5. HTML5新增功能

    HTML5日期输入类型(date) 1.HTML5规范里只规定date新型input输入类型 HTML5里的dateinput类型给了给了浏览器实现原生日历的机会,从此之后,JavaScript版的日 ...

  6. Memory Leak Detection in C++

    原文链接:http://www.linuxjournal.com/article/6556?page=0,0 An earlier article [“Memory Leak Detection in ...

  7. Jenkins安装 CentOS 7上安装Jenkins

    CentOS 7上安装Jenkins Jenkins 安装 只安装不介绍 步骤1:更新CentOS 7 Linux系统管理员的最佳做法之一是使系统保持最新.安装最新的稳定包,然后重新启动.   1 2 ...

  8. Ace admin 如何实现类似于freamset加载页面

    如上标题所述,ace admin做后台页面的时候,可以实现类似于用freamset的功能,但是ace admin做的比freamset更好,他可以用异步加载的形式展示,而加载的页面的内容可以尽可能的少 ...

  9. JQuery获取和设置Select选项的常用方法总结

    1.获取select 选中的 text:  $("#cusChildTypeId").find("option:selected").text();  $(&q ...

  10. 两个List中的补集

    /** * 获取两个List的不同元素 * @param list1 * @param list2 * @return */ private static List getDiffrent(List ...