【Java基础向】多态
来源:互联网 发布:品茗造价软件 编辑:程序博客网 时间:2024/06/05 20:55
方法签名:方法名+参数(个数,类型,顺序)
重写(override)-方法覆盖
子类重写父类方法,仅实例方法可被重写,成员变量和静态方法只能被隐藏(即子类声明同样的成员变量和静态方法,本质不是重写父类方法)
重写实例:父类Parent中有实例方法A,子类child定义了与A 相同签名和子集返回类型 的实例方法B,子类对象ChildObj只能调用自己的实例方法B。
方法的重写(override)两同两小一大原则:
1.方法名相同,参数(类型,个数,顺序)相同-不然就算重载
2.子类返回类型小于父类返回类型
3.子类抛出异常小于父类抛出异常
4.子类访问权限大于父类方法访问权限(例:public不能变为private,降低访问权限)
注意:重写方法可以改变其它的方法修饰符,如final,synchronized,native。不管被重写方法中有无final修饰的参数,重写方法都可以增加、保留、去掉这个参数的 final 修饰符(参数修饰符不属于方法签名)。
重载(overload)
在同一个类中,有多个方法名相同,参数列表不同(参数个数不同,参数类型不同,参数顺序不同),与方法的返回值无关(仅返回值不能区别两个同名,同参数的方法),与权限修饰符无关。编译器通过对方法签名的识别即可静态编译出不同的方法。这也是java中重载与重写的区别之一。
隐藏:只有成员变量(不管是不是静态)和静态方法可以被隐藏。
- 成员变量
父类 Parent 中有成员变量 A ,子类 Child 定义了与 A 同名的成员变量 B ,子类对象 ChildObj 调用的是自己的成员变量 B。如果把子类对象 ChildObj 转换为父类对象 ParentObj ,ParentObj 调用的是父类的成员变量 A 。
1.隐藏成员变量时,只要同名即可,可以更改变量类型(无论基本类型还是隐藏类型)
2.不能隐藏父类中的 private 成员变量,换句话说,只能隐藏可以访问的成员变量。
3.隐藏父类成员变量 A 时,可以降低或提高子类成员变量B的访问权限,只要A不是 private。(protected->public)
4.隐藏成员变量与是否静态无关!静态变量可以隐藏实例变量,实例变量也可以隐藏静态变量。
5.可以隐藏超类中的final成员变量。
- 静态方法
父类 Parent 有静态方法 A ,子类 Child 定义了与 A 相同签名和子集返回类型 的静态方法 B ,子类对象 ChildObj 调用的是自己的静态方法 B 。如果把子类对象 ChildObj 转换为超类对象 ParentObj ,ParentObj 调用的是父类的静态方法 A。
隐藏后必须仍为静态方法
-
资料参考
- 【Java基础向】多态
- java基础和面向对象
- JAVA基础和面向对象的复习
- 各种基础知识点整理(Java向)
- java基础和面向对象面试题
- java基础---非法前向引用
- 【基础】关于Java向数据库中插入DateTime类型数据
- 从java基础加深对面向对象的理解·
- 无向图相关算法基础(java实现)
- Java-基础 文件操作IO 向文件中追加数据
- JAVA中的结构体排序(基础向)
- 有向图基础
- 【终极面试】基础向
- css基础向
- html基础向
- html基础向_2
- Java基础:向txt文档中追加写入多个对象,并读取
- 再探java基础——对面向对象的理解(1)
- PAT1002 写出这个数 int《=》string
- 对TreeView的Review_1
- SAP Control Framework
- CMD命令跳转指定目录
- 10.A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:
- 【Java基础向】多态
- Hi3518e安装第四步
- 数据库表、序列以及触发器的创建
- 什么是haar分类器
- [测试]ACC测试方法学习-Google推荐
- 农历与公历,气节的转换
- sqlplus执行语句报错:unknown command beginning解决方案
- 浏览器内核的解析和对比
- java中组合与继承的区别和联系