面试题:Java静态/非静态方法重写
1.非静态方法重写
- public class Test {
- public static void main(String[] args) throws Exception {
- Tree pine = new Pine();
- Tree oak = new Oak();
- say(pine);
- say(oak);
- }
- private static void say(Tree tr) {
- tr.say();
- }
- }
- class Tree {
- public void say() {
- System.out.println("Tree");
- }
- }
- class Pine extends Tree {
- public void say() {
- System.out.println("Pine");
- }
- }
- class Oak extends Tree {
- public void say() {
- System.out.println("Oak");
- }
- }
- 程序执行后输出:
Pine
Oak
2.静态方法重写
- class Tree {
- public static void say() {
- System.out.println("Tree");
- }
- }
- class Pine extends Tree {
- public static void say() {
- System.out.println("Pine");
- }
- }
- class Oak extends Tree {
- public static void say() {
- System.out.println("Oak");
- }
- }
- 程序执行后输出:
Tree
Tree
3.原因分析
静态方法是属于类的,理论上可以重写,但其不具有多态性。因为多态性指在运行时确定类型,静态方法却是在编译时就确定类型的。
多态性只与实例、非静态方法相关。
面试题:Java静态/非静态方法重写的更多相关文章
- java 静态变量&静态方法
1. 静态变量是static修饰的成员变量(类变量),若无static修饰,则是实例变量.静态变量是一种全局变量,它属于某个类,不属于某个对象实例,是在各对象实例间共存. 访问静态变量直接通过类名 ...
- Java 静态static 关键字作用
静态的方法1.可以通过类名打点访问2.不能使用this关键字3.不能访问非静态的属性和方法 /* * 静态的方法: * 1.属于类的方法,可以通过类名打点访问 * 2.方法中不能使用this关键字 * ...
- PHP中静态(static)调用非静态方法详解
1.PHP中可以静态调用非静态方法么? 今天我被问到PHP中可不可以使用 className::methodName() 的方法来调用一个没有声明static的方法.在我的印象中,我好像是见过这种用法 ...
- [转]Java静态方法为什么不能访问非静态方法
非静态方法(不带static)可以访问静态方法(带static),但是反过来就不行,为什么呢? ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 publi ...
- java静态与非静态区别
这里的静态,指以static关键字修饰的,包括类,方法,块,字段. 非静态,指没有用static 修饰的. 静态有一些特点: 1.全局唯一,任何一次的修改都是全局性的影响 2.只加载一次,优先于非静态 ...
- JAVA静态和非静态内部类
JAVA静态和非静态内部类 一直对java的静态和非静态内部类的东东理解不清楚,今天测试了一下,下面把测试结果记录一下,加深印象.用于以后查找. 直接上代码. package com.test.xml ...
- <转>java中静态方法和非静态方法的存储
Java中非静态方法是否共用同一块内存? 将某 class 产生出一个 instance 之后,此 class 所有的 instance field 都会新增一份,那么所有的 instance met ...
- 从JVM内存管理的角度谈谈JAVA类的静态方法和静态属性
在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的 ...
- Java静态方法为什么不能访问非静态方法
转载自:https://www.2cto.com/kf/201502/375549.html 非静态方法(不带static)可以访问静态方法(带static),但是反过来就不行,为什么呢? publi ...
随机推荐
- winform textbox 的自动实现功能
好久没写博客了,主要是太懒了,之前因为做bs的比较多现在想转cs端了,虽然现在做cs也一年了,可接触的东西太过零碎了,以至于感觉这一年好像什么都没有学到.估计是因为学了之后没有记录,不扎实,然后又忘记 ...
- c语言中的结构体指针类型的cast
1.我们在c语言中会经常碰到强制类型转换. 在这,我介绍一种结构pointer类型转换,但是有前提(有点类似于c++中的继承中的子父对象的cast). 简单的介绍一下: 首先我们要知道一个结构的指针, ...
- ACboy needs your help(HDU 1712 分组背包入门)
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- Scala学习笔记--隐式转换
隐式转换的规则:1.无歧义规则:隐式转换唯有不存在其他可插入转换的前提下才能插入 若编译器有两种方法修正x+y 如convert1(x)+y,convert2(x)+y,会报错2.单一调用规则:只尝 ...
- Angular2 - Starter - Pipes, Custom Pipes
在Angular2 模板中,我们在显示数据时,可以使用通道将数据转换成相应的格式的值的形式来显示,而且这不改变源数据.比如,我们可以使用date通道来转换时间显示的格式: {{date | date: ...
- mysql 导出导入sql
>mysqldump -u用户名 -p密码 -h主机名 数据库名 > 20150116mw_pm_db.sql mysql> source /home/y/my_work/20150 ...
- poj2484--A Funny♂Game
题意:n个硬币围成环,每次可以取相邻两个硬币或者一个,不能取者负. Ans:n<=2的时候先手必胜,其他任意情况后手必胜,因为不论我先手取什么,我后手总有中心对称与它配对. #include&l ...
- 微软在MSDN中更新了Win8.1批量授权版镜像(中文版更新完毕&版本说明)
微软在MSDN中更新了Win8.1大客户专业版和企业版镜像,零售版镜像(即专业版+核心版二合一镜像)没有更新,依然是9月份发布的版本.已证实,新的批量授权版镜像是集成了GA Rollup A更新,并且 ...
- windows下将隐藏文件通过命令行改变为普通的显示文件
attrib -h -s *.* /s /d 不懂的看下 attrib /? 帮助.保存为bat也可以.
- Android和FTP服务器交互,上传下载文件(实例demo)
今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...