继承-权限-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. Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践

    本课主题 Broadcast 运行原理图 Broadcast 源码解析 Broadcast 运行原理图 Broadcast 就是将数据从一个节点发送到其他的节点上; 例如 Driver 上有一张表,而 ...

  2. ZT 骆家辉宣布辞职 他给中国带来什么留下什么?

    骆家辉宣布辞职 他给中国带来什么留下什么? 字号|2013年11月20日 15:20    已有1933人阅读    57 导 读 美国驻华大使骆家辉20日上午发表声明,宣布辞职.骆家辉履任期间为中国 ...

  3. API Gateway微服务

    微服务中的 API 网关(API Gateway)   前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了 ...

  4. D3——动态绑定数据

    一.绑定数组元素 , , , , ]; d3.select("body") .selectAll("p") .data(dataset) .enter() .a ...

  5. Spring Framework5.0 学习(4)—— Bean的命名id和name区别

    Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: & ...

  6. c3p0整合mysql报错问题

    启动报错: [com.mchange.v2.c3p0.DriverManagerDataSource] - Could not load driverClass com.mysql.cj.jdbc.D ...

  7. 使用 PHP Curl 做数据中转

    流程 收集头部信息 收集请求数据 转换头部信息为 CURL 头部请求格式 使用 Curl 进行转发 收集 HTTP 头信息 function getAllHeaders() { $headers = ...

  8. 理解JavaScript闭包(closure)

    闭包听了很多次了,可是到底有那些具体的用法还是不清楚,看了<JavaScript高级程序设计>,有点明白了. 1.闭包的定义: 闭包其实就是一个函数,而这个函数有点特别,它能够访问另一个函 ...

  9. Angular.js数据绑定时自动转义html标签及内容

    angularJS在进行数据绑定时默认是以字符串的形式数据,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止html标签的注入攻击,但有时候需要,特别是从数据库读取带格式的文本 ...

  10. Synchronized介绍

    来源 https://www.imooc.com/learn/1086 作用 ​ 同步方法支持一种简单的策略来防止线程干扰和内存一致性错误,如果一个对象对多个线程可见,则对该对象变量的所有读取或写入都 ...