Java连载45-继承举例、方法覆盖
一、java语言中假设一个类没有显式的继承任何类,那么该类默认继承java se库中提供的java.lang.object类
1.快捷键:ctrl + shift + t:可以在myeclipse中查找类
2.快捷键:ctrl + shift + r:可以在myeclipse中查找资源
继承类举例:
package com.bjpowernode.java_learning; public class d45_1_ extends extend1 { public static void main(string[] args) { d45_1_ d1 = new d45_1_(); system.out.println(d1.tostring());//说明继承了javase默认的类 system.out.println(d1.a);//继承了extend1这个类,其实继承就是指把父类的代码都拿到子类里面 //不能继承构造方法和私有实例变量 } } class extend1 { int a; }
回顾一下:
方法重载和返回值类型,和修饰符列表是没有关系的。
方法重载的条件:在同一个类中;方法名相同;参数列表不同(包括顺序、类型、个数)
二、方法的覆盖
1.方法覆盖又被称为方法重写,英文名称:override\overwrite
2.什么时候使用方法重写
当父类中的方法已经无法满足当前子类的业务需求,子类有必要将父类中继承过来的方法机型重新编写,这个重新编写的过程称为方法重写/方法覆盖
3.什么条件下才会发生方法覆盖
(1)方法重写发生在具有继承关系的父子类之间;
(2)返回值类型相同,方法名相同,形式参数列表相同
(3)方法重写的时候,访问权限不能变得更低,比如:原来的函数是public的,继承的类必须比public更大,或者平级,不能是protected这种更小的权限
(4)方法重写的时候,抛出异常不能更多,可以更少或一样多。(这个后面再讲)
4.建议方法重写的时候尽量复制粘贴,不要编写,容易出错,导致没有产生覆盖。
5.注意点:
(1)私有方法不能继承,所以不能覆盖;(2)构造方法不能继承,所以不能覆盖;(3)静态方法不存在覆盖;(4)覆盖只针对方法不包含属性变量。
package com.bjpowernode.java_learning; public class d45_2_methodcover { public static void main(string[] args) { animal1 a1 = new animal1(); a1.name = "jfai"; a1.move(); bird1 b1 = new bird1(); b1.name = "jfioaweh"; b1.move(); } } class animal1{ string name; public void move() { system.out.println(this.name+"正在移动"); } } class bird1 extends animal1{ public void move() { system.out.println(this.name+"不再移动");//方法重写, } }
6.生成override的快捷方法:
source-生成方法覆盖
五、源码:
d45_1_inheritclassexample.java
d45_2_methodcover.java
地址:
https://github.com/ruigege66/java/blob/master/d45_1_inheritclassexample.java
https://github.com/ruigege66/java/blob/master/d45_2_methodcover.java
2.csdn:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料