多态的学习
来源:互联网 发布:c语言编写程序的步骤 编辑:程序博客网 时间:2024/05/19 02:03
1.多态-隐藏基类方法与多态的实现(*S)
签名不同(重载)
签名相同(隐藏基类方法)
子类可以重写父类方法
虚方法
重写方法
重写基类方法一样可以调用基类方法
多态就是对象可以表现多个类型的能力
2.如果子类和父类的方法名重名了,会报绿线,如何把绿线干掉??
第一种方法:可以在子类方法的访问符后面加以new(将父类方法隐藏了)
第二中方法:如果子类中有与父类同名的方法:但子类要调用自己的方法
就要使父类virtual(虚方法),子类重写父类方法(override)(只有abstract和virtual可以被重写)
虚方法与重写:
1.方法不能用static修饰
2.方法重写于基类的签名必须一致
3.virtual 不能于private一起使用
base fun();的目的主要是添加逻辑
常见虚方法:Equal();ToString();GetHashCode();
重写的时候注意:签名都一样(签名包括参数(包括数量,顺序,参数类型不包括修饰符))与返回值无关
额外知识点:
overload:重载指的是同一个类中有两个或多个名字相同但是参数不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。
override:过载也称重写是指子类对父类中虚函数或抽象函数的“覆盖”(这也就是有些书将过载翻译为覆盖的原因),但是这种“覆盖”和用new关键字来覆盖是有区别的。
new:覆盖指的是不同类中(基类或派生类)有两个或多个返回类型、方法名、参数都相同,但是方法体不同的方法。
但是这种覆盖是一种表面上的覆盖,所以也叫隐藏,被覆盖的父类方法是可以调用得到的。
重载覆盖的发生条件:
重载,必然发生在一个类中,函数名相同,参数类型或者顺序不同构成重载,与返回类型无关
重写,必然发生在基类和派生类中,其类函数用virtual修饰,派生类用override修饰
覆盖,在子类中写一个和基类一样名字(参数不同也算)的非虚函数,会让基类中的函数被隐藏,编译后会提示要求使用New关键字
重写(有虚方法或者抽象方法时使用)与new(没有抽象方法或虚方法时)的时候:只有方法体不同,其它的参数包括访问类型返回值
重载于重写都于修饰符无关
new是覆盖(就是子类于父类中相同的部分)
override是直接都是自己的东西了
注意:看懂了与会写了差十万八千里
签名不同(重载)
签名相同(隐藏基类方法)
子类可以重写父类方法
虚方法
重写方法
重写基类方法一样可以调用基类方法
多态就是对象可以表现多个类型的能力
2.如果子类和父类的方法名重名了,会报绿线,如何把绿线干掉??
第一种方法:可以在子类方法的访问符后面加以new(将父类方法隐藏了)
第二中方法:如果子类中有与父类同名的方法:但子类要调用自己的方法
就要使父类virtual(虚方法),子类重写父类方法(override)(只有abstract和virtual可以被重写)
虚方法与重写:
1.方法不能用static修饰
2.方法重写于基类的签名必须一致
3.virtual 不能于private一起使用
base fun();的目的主要是添加逻辑
常见虚方法:Equal();ToString();GetHashCode();
重写的时候注意:签名都一样(签名包括参数(包括数量,顺序,参数类型不包括修饰符))与返回值无关
额外知识点:
overload:重载指的是同一个类中有两个或多个名字相同但是参数不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。
override:过载也称重写是指子类对父类中虚函数或抽象函数的“覆盖”(这也就是有些书将过载翻译为覆盖的原因),但是这种“覆盖”和用new关键字来覆盖是有区别的。
new:覆盖指的是不同类中(基类或派生类)有两个或多个返回类型、方法名、参数都相同,但是方法体不同的方法。
但是这种覆盖是一种表面上的覆盖,所以也叫隐藏,被覆盖的父类方法是可以调用得到的。
重载覆盖的发生条件:
重载,必然发生在一个类中,函数名相同,参数类型或者顺序不同构成重载,与返回类型无关
重写,必然发生在基类和派生类中,其类函数用virtual修饰,派生类用override修饰
覆盖,在子类中写一个和基类一样名字(参数不同也算)的非虚函数,会让基类中的函数被隐藏,编译后会提示要求使用New关键字
重写(有虚方法或者抽象方法时使用)与new(没有抽象方法或虚方法时)的时候:只有方法体不同,其它的参数包括访问类型返回值
重载于重写都于修饰符无关
new是覆盖(就是子类于父类中相同的部分)
override是直接都是自己的东西了
注意:看懂了与会写了差十万八千里
- 多态的学习
- 多态的学习
- java多态的学习
- 多态的学习笔记
- C++学习------包含多态的例子
- C++学习------参数多态的例子
- C++学习------强制多态的例子
- C++学习------过载多态的例子
- C++学习------对多态的理解
- JAVA学习:多态的总结
- JAVA学习.多态的概念
- 关于多态的学习总结
- OC 多态的运行 学习笔记
- C++多态的学习总结
- 学习 C++类的多态
- 继承与多态的学习
- 关于C++多态的学习
- 关于java多态的解释学习
- poj 1191 棋盘分割(记忆化dp+递归)
- 图像处理-线性滤波-3 高斯滤波器
- 7月12日A题:Free Cash
- oracle 行转列
- mysql 5.1 卸载后重新安装,无法启动server的解决办法
- 多态的学习
- 非计算机专业如何转行做程序员:我的经验
- 多线程基础学习
- 递归暴力破解法解数独问题
- 淘宝2011.9.21校园招聘会笔试题
- 设计模式之Bridge
- POJ 1543 Perfect Cubes 小水 模拟 打表过
- 反射
- linux ssh无密码登录