继承-权限-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#MD5笔记

    在这里简单记录一下md5加密的方式 代码如下,请自行封装: static void Main(string[] args) { "); Console.WriteLine(s); Conso ...

  2. Linux ->> UBuntu 14.04 LTE下安装Hadoop 1.2.1(集群分布式模式)

    安装步骤: 1) JDK -- Hadoop是用Java写的,不安装Java虚拟机怎么运行Hadoop的程序: 2)创建专门用于运行和执行hadoop任务(比如map和reduce任务)的linux用 ...

  3. 运维不仅仅是懂Linux就行,还需要知道这些……

    运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,最近看一个报道说,windows的服务器占了47.71%.嗯,向windows运维人员致敬.当然我们这篇文章不是说运维除了懂Linu ...

  4. Boost智能指针——weak_ptr

    循环引用: 引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象.一个简单的例子如下: #include <string>#include <iost ...

  5. 150行JavaScript代码实现增强现实

    增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像.视频.3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动.这 ...

  6. sql语句的group by 与 inner join

    一.理解group by和聚合函数 先来看下表1,表名为test: 表1 执行如下SQL语句: 1 2 SELECT name FROM test GROUP BY name 你应该很容易知道运行的结 ...

  7. Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法

    在QQ群里问了一些高手,同时参考了这篇文章:http://huangyunbin.iteye.com/blog/1113983,终于把这个问题搞定了. 首先,我用的是zip包的Mysql,直接解压使用 ...

  8. 八.安装Nginx

    http://blog.csdn.net/grhlove123/article/details/47834673

  9. BZOJ3238:[AHOI2013]差异(SAM)

    Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Output 54 HINT 2<=N< ...

  10. BZOJ1002:[FJOI2007]轮状病毒(找规律,递推)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...