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. 记录 shell学习过程(8)函数

    start () { echo "Apache start ...... [OK]" #return 0 可以写一个返回值,比如执行成功返回 0 } stop () { echo ...

  2. js -- 高阶函数的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 【转】C# Application.DoEvent()的作用

    Application.DoEvents()的作用:处理所有的当前在消息队列中的Windows消息. private void button1_Click(object sender, EventAr ...

  4. 什么是nuget?nuget包是如何管理

    本文链接:https://blog.csdn.net/Microsoft_Mao/article/details/101159800做windows开发的,迟早会接触到nuget这个东西,那么今天我们 ...

  5. 「题解」「CF1103B」Game with modulo

    简易中文题目 猜一个数字 \(a\),而你可以向机器提问一对 \((x,y)\) ,如果 \(x\bmod a\ge y \bmod a\) 机器返回字符串 x,反之返回字符串 y . 询问不能超过 ...

  6. 2.8 (显示、隐式、线程休眠) selenium 等待方式 ❀

    http://blog.csdn.net/pf20050904/article/details/20052485 http://www.cnblogs.com/hellokitty1/p/629584 ...

  7. 后缀数组 poj 3415

    首先,height[i]-k+1  很好理解把,他是说明目前这对后缀中不小于k的公共子串个数. 题解说用单调栈维护,为什么要用单调栈维护呢?因为时间复杂的可以大大降低. 怎么个降低方法呢? 在之前学习 ...

  8. MySQL5.7的参数优化

    https://www.cnblogs.com/zhjh256/p/9260636.html query_cache_size = 0query_cache_type=0innodb_undo_tab ...

  9. jenkins pipline 几个注意细节

    新建jenkins pipline 1)pipeline的脚本语法要正确,sonarqube的projectKey需要做相应的修改 2)先执行一次构建,会报错 3)进到jenkins workspac ...

  10. 浅谈ABB机器人(工具坐标,工件坐标,有效载荷)

    工具坐标(tool): 使tcl坐标偏移到工具上,例如焊接工作,使机器人工作点切入焊枪点上 mass:工具的重量 xyz:偏移距离的大小 验证:通过手动模式,切换至自定义工具,重定向 工件坐标(wob ...