JAVA覆盖和重写的区别及说明
目录
- Java覆盖和重写的区别
- 经常听到两种话
- 认真读完上面两份代码
JAVA覆盖和重写的区别
经常听到两种话
- 1.覆盖=重写。
- 2.静态方法可android以覆盖但不能重写吗,这两句话听起来挺矛盾的是不是
废话不多说直接上图:
package com.编程wangshili; public class Main { public static void main(String[] args) { Father f =new Child();//创建子类对象,父类引用 f.print();//调用父类方法 ((Child)f).print();//向下转型,调用子类方法 while(truephp); } } /* * 重写有多态,调用方法时看对象 */ class Father{ public void print(){ System.out.println ("这是父类"); } } class Child extends Father{ public void print(){ System.out.println ("这是子类"); } }
package com.wangshili; public class Test { public static void main(String[] args) { Father f =new Child();//创建子类对象,父类引用 f.print();//调用父类方法 ((Child)f).print();//向下转型,调用子类方法 while(true); } } /* * 覆盖没多态,调用方法时看引用类型(静态属于类) */ class Father{ public static void print(){ System.out.println ("这是父类"); } } class Child extends Father{ public stawww.devze.comtic void print(){ System.out.println ("这是子类"); } }
认真读完上面两份代码
你应该能发现区别了,我总结下:
1.非静态方法,覆盖=重写,有多态
2.静态方法,是不能重写的,比如你添加@overwrite直接就报错了,我们知道静态属于类,通过类名就可以直接调用该方python法,所以这里也是一样,只看引用类型,跟创建对象类型无关。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论