2018-9-28

多态:

重载也称为静态多态(静态在编译阶段就能确定)(动态是跟运行时挂钩)

尽量去选择关系轻的,降低耦合度(紧密度)

内聚:

减少与外界的联系,降低与其他对象和类的联系

对象与对象的关系:高内聚,低耦合

继承本身就是打破封装的(因为它要调用外界的东西)(封装是内敛的,阻止访问)(封装与继承是相互冲突的)

重写规则:

  1. 发生在有继承关系的类之间(同一类就是重载了)
  2. 相同的方法名,参数列表,返回类型
  3. 可见性(public,protected,private)不能被缩小
  4. 异常不能被放大
  5. 规则与c++中不一样
  6. 静态类型不能被重写

类型转换

都是按地址空间大小解析

子类-->父类(隐式转换,自动截取,按父类地址空间大小解析,多出的部分截取不解析,但是当Person p = new Lawyer(“kb”,2);再转回子类时不会出错,但还是要instanceof语句)

经常用父类引用去引用子类对象!!!(左边是引用(p),右边是对象(lawyer))

父类-->子类(可能会有错,必须强制转换,按子类空间大小解析,(少的部分用乱码解析给子类,会有错),使用者自己承担问题,用instanceof语句)

if(p instanceof Lawyer)(可以转才执行下一句)

静态类型(永远不会变化)决定编译能否通过

动态类型,实际指向的类型(执行的时候可变)由动态类型决定的方法调用称之为多态

Byte b = (byte) 10;

b--- byte(静态类型永不会变)

10 ----int(动态类型)

多态:

同一类域,不同对象,相同行为,不同表现形式

成为多态的语法前提:

  1. 有继承层次(子类extends 父类 )
  2. 方法重写
  3. 等号左边的引用要一致,父类声明的变量去引用子类的对象

this:指向当前调用者(本身)谁用就是谁

方法重载的要求是什么?

方法名相同

参数列表不同(参数类型不同或者参数个数不同)

public class A{

public void test1(){

System.out.println("A test1");

}

}

public class B extends A{

public void test1(){

System.out.println("B test1");

}

public void test2(){

System.out.println("B test2");

}

public static void main(String[] args){

A a = new B();

a.test1();

a.test2(); //a的静态类型没有test2方法,所以编译不能通过,必须有, //b中才能重写,调用

}

}

编译运行后的结果是什么?为什么?

编译报错,变量a是A类型的,无法调用到test2方法,因为test2方法是B类中独有的

分析:a的静态类型是A,动态类型是B,首先静态编译,有test1方法,然后动态调用B中的test1,但是A中没有test2,编译报错

java篇 之 多态的更多相关文章

  1. 深度分析:理解Java中的多态机制,一篇直接帮你掌握!

    Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...

  2. java中实现多态的机制是什么?

    多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...

  3. Java面向对象之多态(来源于身边的案例)

    2019年1月3日 星期四 Java面向对象之多态(来源于身边的案例) 1. 为什么要用多态? 1.1 多态是面向对象的三大特性之一 1.2 多态是基于接口设计的模型 1.3 多态具有横向扩展特性 1 ...

  4. Java 中的多态,一次讲个够之接口实现关系中的多态

    上文还没有写完,这一篇继续 Java 中的多态,一次讲个够之继承关系中的多态 https://www.cnblogs.com/qianjinyan/p/10824576.html 接口实现关系,和继承 ...

  5. JSON总结(java篇)

    JSON总结(java篇一) JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于 ...

  6. 13、java中的多态

    1,多态的体现 父类的引用指向了自己的子类对象. 父类的引用也可以接收自己的子类对象.2,多态的前提 必须是类与类之间有关系.要么继承,要么实现. 通常还有一个前提:存在覆盖. 3,多态的好处 多态的 ...

  7. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  8. java面向对象之 多态 Polymorphism

    多态(Polymorphism):用我们通俗易懂的话来说就是子类就是父类(猫是动物,学生也是人),因此多态的意思就是:父类型的引用可以指向子类的对象. 1.多态的含义:一种类型,呈现出多种状态 主要讨 ...

  9. java异常处理、多态

    第一:GC是什么? 为什么要有GC?  第二:垃圾回收的优点和原理.并考虑2种回收机制.  第三:垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?  第 ...

随机推荐

  1. batch_idx作用

    batch_idx作用 待办 batch_idx * len(data) 这里的batch_idx 就是数组分组之后的组号,len(data)就是每组的数据量,这个式子表示的就是总共已经训练的数据总数 ...

  2. go语言 内置的椭圆数字签名及其验证算法

    package main import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" & ...

  3. 实现ENSP模拟器与物理主机、虚拟机通信

    一.环境描述 我需要实现华为模拟器中的网络设备和物理主机.虚拟机通信.这篇文章中以ENSP中的路由器为例,实现它和物理主机.虚拟机的通信.  二.实现方法 在ENSP中借助Cloud来实现. 在Clo ...

  4. NPOI _导出exl(简单应用)

    1. 导出exl表格,创建表格导出到客户端 public static MemoryStream Export_Table<T>(List<T> datalist) { Mem ...

  5. Learn from Niu 2020.1.13

    观念: 1. 把可视化的东西拾起来, 毕竟是做那个出身的. 2. 可视化里面时序数据,时空数据一直都是非常重要的. 3. know your data永远是最重要的一步, 我想更好的方式是,数据驱动, ...

  6. Allegro---层叠结构设置

     PCB层叠结构 层叠结构是一个非常重要的问题,不可忽视,一般选择层叠结构考虑以下原则: ·元件面下面(第二层)为地平面,提供器件屏蔽层以及为顶层布线提供参考平面: ·所有信号层尽可能与地平面相邻: ...

  7. MyBatis 动态代理开发

    MyBatis 动态代理开发 §  Mapper.xml文件中的namespace与mapper接口的类路径相同. §  Mapper接口方法名和Mapper.xml中定义的每个statement的i ...

  8. python3练习100题——013

    熟悉的水仙花数来了,,,... 原题链接:http://www.runoob.com/python/python-exercise-example13.html 题目:打印出所有的"水仙花数 ...

  9. AM335X的SD卡更新系统学习记录

    一般利用一张SD卡就能进行系统的更新,以前一直不知是什么原理,最近了解了下,对了解到的内容做个记录.使用的是AM335X平台,系统是Linux,文件系统是EXT3: 1.首先需要一张分好分区的SD卡( ...

  10. 三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train. ...