开发者

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)。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜