方法重写
重写都是方法的重写,与属性无关
父类的引用可以指向子类,就是new一个子类的对象数据类型可以写为父类,new子类是可以指向父类的
重写的快捷键:Alt+insert
对静态方法调用的时候,调用的方法只和定义的参数类型有关,但对非静态方法调用的时候,调用的方法都是new了的对象的方法
静态方法和非静态方法的区别很大,不要随意去写静态方法
重写是对非静态方法的,没有静态方法的重写(目前死记)
子类重写了父类的方法,父类原来的那个方法就不能被调用了
注意:
- 重写需要有继承关系,子类重写父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大但不能缩小 public>protected>default>private
- 抛出的异常:范围可以缩小,但不能扩大:ClassNotFoundException -->Exception(大)
- 子类的方法和父类必须一致,但方法体不同
为什么要重写:
- 父类的功能子类不一定需要,或不一定满足
- 快捷键:Alt+insert:override
理解:
静态方法属于静态绑定,在编译阶段已经确定函数名和地址,静态方法当然是可以被继承的,但是却不能被重写,为什么那? 因为重写的意思是重新定义父类的虚函数,但是虚函数是动态绑定的,而静态方法是静态绑定的,所以静态函数必然不能是虚函数,也就不存在所说的重写了.你在子类中重新写一个同名的函数,覆盖了父类的同名函数,在使用子类指针进行调用的时候,调用的就是子类的这个静态方法
例如:
//父类public class b { public void test(){ System.out.println("b"); }}//子类public class a extends b{ @Override //注解:有功能的注释 public void test() { System.out.println("a"); }}//执行类public class zhixing { public static void main(String[] args) { a a = new a(); a.test();//输出的就是a了,因为子类重写了父类,就相当于重新改写了父类,重写后就掉不到父类的那个方法了 }}
原文转载:http://www.shaoqun.com/a/522472.html
acca:https://www.ikjzd.com/w/1370
淘粉吧返利:https://www.ikjzd.com/w/1725
方法重写重写都是方法的重写,与属性无关父类的引用可以指向子类,就是new一个子类的对象数据类型可以写为父类,new子类是可以指向父类的重写的快捷键:Alt+insert对静态方法调用的时候,调用的方法只和定义的参数类型有关,但对非静态方法调用的时候,调用的方法都是new了的对象的方法静态方法和非静态方法的区别很大,不要随意去写静态方法重写是对非静态方法的,没有静态方法的重写(目前死记)子类重写了父
首信易:首信易
蜜芽:蜜芽
9月1日起,亚马逊英国站多项费用上涨:9月1日起,亚马逊英国站多项费用上涨
亚马逊卖家必看!亚马逊FBA发货3大注意事项!:亚马逊卖家必看!亚马逊FBA发货3大注意事项!
被跟卖,恶意篡改竞争!船长BI教你亚马逊Listing该怎么维护:被跟卖,恶意篡改竞争!船长BI教你亚马逊Listing该怎么维护
没有评论:
发表评论