笔记

1.向上造型的意义:-------实现代码复用

  • 超类型的引用指向派生类的对象
  • 能点出来什么,看引用的类型----------规定
超类型      派生类型
Animal o3 = nem Tiger();//向上造型Person p1 = new Student();
Person p1 = new Teacher();
Person p1 = new Doctor();
p1/p2/p3.只能点出Person类中的
public class UploadDemo {public static void main(String[] args) {Aoo o1 = new Aoo();o1.a = 1;o1.show();//o1.b = 2;  //编译错误//o1.test(); //编译错误,超类不能访问派生类的Boo o2 = new Boo();o2.b = 1;o2.test();o2.a = 2;  //正确o2.show(); //正确,派生类可以访问超类的Aoo o3 = new Boo(); //向上造型o3.a = 1;o3.show();//o3.b = 2;  //编译错误//o3.test(); //编译错误,能点出来什么,看引用的类型}
}class Aoo{int a;void show(){}
}
class Boo extends Aoo{int b;void test(){}
}

2.方法的重写(Override或Overriding):重新写

  • 发生在父子类中,方法名相同,参数列表相同
  • 重写方法被调用时,看对象的类型-------规定
  • 重写遵循“两同两小一大”原则:--------
    • 两同:

      • 方法名相同
      • 参数列表相同
    • 两小:
      • 派生类方法的返回值类型小于或等于超类方法的

        • void 和基本类型时,必须相等
        • 引用数据类型时,小于或等于
      • 派生类方法抛出的异常小于或等于超类方法的—API
    • 一大:
      • 派生类方法的访问权限大于或等于超类方法的
public class OverrideDemo {}//超类大,派生类小
class Coo{void show(){ }double test(){ return 0.0;}Student say(){return null;}
}
class Doo extends Coo{//int show(){return 5;} //编译错误,void时必须相等//int test(){ return 0;} //编译错误,基本类型时必须相等//Person say(){return null} //编译错误,引用类型时必须小于或等于Student say(){return null;}
}
class 餐厅{viod 做餐(){做中餐}
}
//我还是想要做中餐--------不需要重写
class Aoo extends 餐馆{}
//我想改做西餐------------需要重写
class Aoo extends 餐馆{void 做餐(){做西餐}}//我想在中餐之上加入西餐-----需要重写(先super中餐,再加入西餐)class Aoo extends 餐馆{void 做餐(){super.做餐();+ 做西餐}}

3.重写与重载的区别:
-重写(override):发生在父子类中,方法名相同,参数列表相同
-重载(overload):发生在统一类中,方法名相同,参数列表不同

补充:

1.何时向上造型:------代码复用

  • 当多种角色能干的事是一样的,可以将那多种角色造型到超类数组中,统一访问

学习笔记——面向对象第四天相关推荐

  1. C++ Primer 学习笔记(第四章:表达式)

    2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...

  2. Windows保护模式学习笔记(十四)—— 阶段测试

    Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...

  3. VULKAN学习笔记-inter教学四篇

    VULKAN学习笔记-inter教学四篇 --交换链相关函数:实例层 vkCreateWin32SurfaceKHR vkDestroySurfaceKHR vkGetPhysicalDeviceSu ...

  4. 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法

    机器学习理论<统计学习方法>学习笔记:第四章 朴素贝叶斯法 4 朴素贝叶斯法 4.1 朴素贝叶斯法的学习与分类 4.1.1 基本方法 4.1.2 后验概率最大化的含义 4.2 朴素贝叶斯法 ...

  5. AI学习笔记--人机对话的四种形态

    AI学习笔记--人机对话的四种形态 ><div class="show-content-free"><p>最近在筹备转行 AI PM 由于之前的产品线 ...

  6. OpenCV学习笔记(十四):重映射:remap( )

    OpenCV学习笔记(十四):重映射:remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种,一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后 ...

  7. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  8. Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示

    Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 ...

  9. MATLAB学习笔记(十四)

    MATLAB学习笔记(十四) 一.线性方程组求解 1.1 直接法 1.1.1 利用左除运算符 1.1.2 利用矩阵分解 1.2 迭代法 1.2.1 雅可比(Jacobi)迭代法 1.2.2 高斯-赛德 ...

最新文章

  1. sql 游标_SQL基础丨游标
  2. 96.6. Template
  3. 地图区域划分转换成数学模型解决问题
  4. MATLAB中的fft后为何要用fftshift?
  5. C51指针定义和应用小结
  6. Win7 + VS2015 + CMake3.6.1-GUI + Makefile 编译开源库
  7. 设计模式,六大设计原则,类的特性
  8. 遗传算法原理及代码讲解
  9. IsPostBack详解
  10. POJO类toString()方法
  11. SpringBoot中使用MyBatis-Plus是如何解决Invalid bound statement (not found)这个异常的
  12. Python-脾气暴躁
  13. 麦客存储侯峰:Filecoin生态构建与价值革命 | 星际崛起IPFS云峰会
  14. Definition of Dichotomy
  15. 位移传递率matlab编程,机械振动设计计算与VB编程实例
  16. MySQL 安装步骤方法
  17. Java拆分为姓和名
  18. 游戏分类&&游戏开发常用术语
  19. laravel 发邮件 qq配置
  20. 计算机按键会卡住,为什么电脑有时候会卡死,按键都不起作用,只能强制性关机...

热门文章

  1. 电动力学专题:天线指标
  2. 浏览器原理与常用协议总结
  3. Unity动画生成工具
  4. 基于Python的Reversi黑白棋游戏设计与开发
  5. 精通Python网络爬虫_核心技术框架与项目实战_韦玮.pdf
  6. CCNP基础知识-路由(二)
  7. [N32G45x]轻松几步将embOS移植到国民N32G45X上
  8. openssl之哈希算法使用
  9. His医疗系统行业短信/语音通知解决方案
  10. 武汉理工大学计算机专业读博,决定读博前,你需要看看这些数字