155个建议笔记--建议33:不要覆写静态方法

我们知道在JAVA中可以通过overRide来增强或减弱父类的方法和行为,但覆写是针对非静态方法的,不能针对静态方法(也叫类方法),为什么呢?看一下下面的例子:

View Code
public class OverRideTepublic static void main(String[] args){   Father father=new Son();   father.print1();   father.print2();  }   } class Father{  public static void print1(){   System.out.println("我是父类静态方法");  }  public  void print2(){   System.out.println("我是父类非静态方法");  } } class Son extends Father{  public static void print1(){   System.out.println("我是子类静态方法");  }    public  void print2(){   System.out.println("我是子类非静态方法");  } }1 public class OverRideTest {2 3     public static void main(String[] args){4         Father father=new Son();5         father.print1();6         father.print2();7     }8     9 }
10 class Father{
11     public static void print1(){
12         System.out.println("我是父类静态方法");
13     }
14     public  void print2(){
15         System.out.println("我是父类非静态方法");
16     }
17 }
18 class Son extends Father{
19     public static void print1(){
20         System.out.println("我是子类静态方法");
21     }
22     
23     public  void print2(){
24         System.out.println("我是子类非静态方法");
25     }
26 }

看程序子类son覆写了父类father中的print1(),print2()方法,按道理来说应该都是执行覆写后的方法,然而

运行之后结果:

我是父类静态方法
我是子类非静态方法

分析原因:

son的两个覆写区别仅仅在是否有static,每个实例对象都有两个类型,一个是表面类型,一个是实际类型,表面类型是在声明时得到的,实际类型是对象产生时的类型,例子中,Father是表面类型,Son是实际类型,对于非静态方法而言,是根据对象的实际类型来执行;而对于静态方法则比较特别,首先静态方法不依赖于实例对象,通过类名来访问,其次,可以通过对象访问静态方法,如果是通过对象访问,JVM是通过对象的表面类型来找到静态方法的入口,因而执行Father中的静态方法。

 

转载于:https://www.cnblogs.com/yuwenfeng/archive/2013/05/09/3069152.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux初始化进程ppid号,linux基础(十一)--系统初始化的简谈

我们在深入学习linux之前呢首先要了解其的引导加载过程,这样我们就可以在判断一些在系统初始化过程的出现问题的来源,并及时做出处理。这个过程大概分为【开机】——【BIOS】(CMOS)——【grub或者其他引导程序】——【kernel boot】(initrd文件)——【in…

Vim 快速入门

本文大约 5000 字, 阅读大约需要 10 分钟在 Linux 下最常使用的文本编辑器就是 vi 或者 vim 了,如果能很好掌握这个编辑器,非常有利于我们更好的在 Linux 下面进行编程开发。vim 和 viVim是从 vi 发展出来的一个文本编辑器。代码补完、编译及…

(转载)Qt中使用cout输出的方法

&#xff08;转载&#xff09;http://blog.sina.com.cn/s/blog_4f183d960100sdxf.html最近用QT写一个控制台程序&#xff0c;却不能将提示文本输出到屏幕。 cout<<"abcd"正常运行但是屏幕上却没有输出。 解决办法&#xff1a; 在qt的工程文件(.pro文件)中加入以…

linux如何给vm权限,linux – 如何创建一个每个用户的vm被隔离的环境

感谢libvirt的PolicyKit支持,我相信这可以根据您需要的功能来完成.规则可以由您创建,并由PolicyKit ACL作为数据库(文件,服务器等)访问,以获取有关所有者的信息.此外,如果PolicyKit规则具有对数据库的写入权限,则可以在创建VM时将VM分配给各自的所有者,从而自动创建该数据库.它…

Vim快速入门

本文大约 5000 字&#xff0c; 阅读大约需要 10 分钟 在 Linux 下最常使用的文本编辑器就是 vi 或者 vim 了&#xff0c;如果能很好掌握这个编辑器&#xff0c;非常有利于我们更好的在 Linux 下面进行编程开发。 vim 和 vi Vim是从 vi 发展出来的一个文本编辑器。代码补完、编…

linux内核 cpu_die,Linux内核Crash分析

结合上面的知识&#xff0c;看下当内核打印堆栈信息时&#xff0c;都打印了上面信息。下面的打印信息是工作中遇到的一种情况&#xff0c;打印了内核的堆栈信息&#xff0c;PC指针在dev_get_by_flags中&#xff0c;不能访问的内核虚地址为45685516&#xff0c;内核中一般可访问…

javascript设计模式--命令模式

1 <!DOCTYPE html>2 <html>3 <head>4 <title>命令模式</title>5 <meta charset"utf-8">6 </head>7 <body>8 9 <script>10 /**11 * 命令模式12 *13 * 定义&#xff1a;14 * 将一个请求封装为一个对…

linux 全球用户数量,全球Linux用户市场占有率升至2.78%

6月7日下午1点左右&#xff0c;www.w3counter.com终 于发布了今年5月份的统计数字&#xff0c;看起来&#xff0c;该网站为此次发布大概做了不少审定工作&#xff0c;相比以往&#xff0c;拖延了几天才发布。公布的统计数字如下&#xff1a;4月份 5月份XP …

[GAN学习系列] 初识GAN

本文大约 3800 字&#xff0c;阅读大约需要 8 分钟 要说最近几年在深度学习领域最火的莫过于生成对抗网络&#xff0c;即 Generative Adversarial Networks(GANs)了。它是 Ian Goodfellow 在 2014 年发表的&#xff0c;也是这四年来出现的各种 GAN 的变种的开山鼻祖了&#xff…

黑马程序员 java基础之网络编程TCP

TCP网络传输。 客户端和服务端 分别对应着两个对象。 Scoket&#xff08;客户端&#xff09;和ServerSocket&#xff08;服务端&#xff09;。 Socket(String address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。 这个客户端在一建立的情况下就去连接…

[GAN学习系列] 初始GAN

本文大约 3800 字&#xff0c;阅读大约需要 8 分钟要说最近几年在深度学习领域最火的莫过于生成对抗网络&#xff0c;即 Generative Adversarial Networks(GANs)了。它是 Ian Goodfellow 在 2014 年发表的&#xff0c;也是这四年来出现的各种 GAN 的变种的开山鼻祖了&#xff0…

linux 端口 established,ubuntu/linux上查看端口使用情况

想查看TCP或者UDP端口使用情况&#xff0c;使用netstat -anp如果有些进程看不见&#xff0c;如只显示”-”&#xff0c;可以尝试sudo netstat -anp如果想看某个端口的信息&#xff0c;使用lsof命令&#xff0c;如&#xff1a;sudo lsof -i :631-bash-3.00# netstat -tlnnetstat…

[资源分享] 吴恩达最新《机器学习训练秘籍》中文版可以免费下载了

本文大约 600 字&#xff0c; 阅读大约需要 2 分钟 吴恩达老师在上个月底宣布终于完成了他最新的书籍《Machine Learning Yearning》的最后几个章节&#xff1a; 而最近这本书也有了免费的完整中文版下载了&#xff0c;中文版的名称是《机器学习训练秘籍》&#xff0c;封面如下…

linux一g运行内存不足,在linux运行weblogic出现运行内存不足错误,求鞭挞....

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼# There is insufficient memory for the Java Runtime Environment to continue.# Native memory allocation (malloc) failed to allocate 1431830528 bytes for committing reserved memory.# An error report file with more i…

Android学习笔记44:JSON数据解析

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;采用完全独立于语言的文本格式&#xff0c;为Web应用开发提供了一种理想的数据交换格式。 本文将主要介绍在Android开发中&#xff0c;如何在服务器端创建JSON数据&#xff0c;以…