学习笔记——面向对象第四天
笔记
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.何时向上造型:------代码复用
- 当多种角色能干的事是一样的,可以将那多种角色造型到超类数组中,统一访问
学习笔记——面向对象第四天相关推荐
- C++ Primer 学习笔记(第四章:表达式)
2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...
- Windows保护模式学习笔记(十四)—— 阶段测试
Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...
- VULKAN学习笔记-inter教学四篇
VULKAN学习笔记-inter教学四篇 --交换链相关函数:实例层 vkCreateWin32SurfaceKHR vkDestroySurfaceKHR vkGetPhysicalDeviceSu ...
- 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法
机器学习理论<统计学习方法>学习笔记:第四章 朴素贝叶斯法 4 朴素贝叶斯法 4.1 朴素贝叶斯法的学习与分类 4.1.1 基本方法 4.1.2 后验概率最大化的含义 4.2 朴素贝叶斯法 ...
- AI学习笔记--人机对话的四种形态
AI学习笔记--人机对话的四种形态 ><div class="show-content-free"><p>最近在筹备转行 AI PM 由于之前的产品线 ...
- OpenCV学习笔记(十四):重映射:remap( )
OpenCV学习笔记(十四):重映射:remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种,一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后 ...
- QT学习笔记(十四):QLayout的属性介绍
QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...
- Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示
Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 ...
- MATLAB学习笔记(十四)
MATLAB学习笔记(十四) 一.线性方程组求解 1.1 直接法 1.1.1 利用左除运算符 1.1.2 利用矩阵分解 1.2 迭代法 1.2.1 雅可比(Jacobi)迭代法 1.2.2 高斯-赛德 ...
最新文章
- sql 游标_SQL基础丨游标
- 96.6. Template
- 地图区域划分转换成数学模型解决问题
- MATLAB中的fft后为何要用fftshift?
- C51指针定义和应用小结
- Win7 + VS2015 + CMake3.6.1-GUI + Makefile 编译开源库
- 设计模式,六大设计原则,类的特性
- 遗传算法原理及代码讲解
- IsPostBack详解
- POJO类toString()方法
- SpringBoot中使用MyBatis-Plus是如何解决Invalid bound statement (not found)这个异常的
- Python-脾气暴躁
- 麦客存储侯峰:Filecoin生态构建与价值革命 | 星际崛起IPFS云峰会
- Definition of Dichotomy
- 位移传递率matlab编程,机械振动设计计算与VB编程实例
- MySQL 安装步骤方法
- Java拆分为姓和名
- 游戏分类&&游戏开发常用术语
- laravel 发邮件 qq配置
- 计算机按键会卡住,为什么电脑有时候会卡死,按键都不起作用,只能强制性关机...