java 普通方法_Java普通方法与static方法的多态
Java普通方法与static方法的多态
package cm.java.Practic8;
class Super {
public int field = 0;
public int getField() {
return field;
}
public static String staticGet() {
return "Base staticGet()";
}
public String dynamicGet() {
return "Base dynamicGet()";
}
}
class Sub extends Super {
public int field = 1;
public int getField() {
return field;
}
public int getSuperField() {
return super.field;
}
public static String staticGet() {
return "Derived staticGet()";
}
public String dynamicGet() {
return "Derived dynamicGet()";
}
}
public class FiledAccessP156 {
public static void main(String[] args) {
Super sup = new Sub();
System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField());
Sub sub = new Sub();
System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField());
System.out.println(sup.staticGet());
System.out.println(sup.dynamicGet());
}
}
输出:
sup.field = 0, sup.getField() = 1
sub.field = 1, sub.getField() = 1
Base staticGet()
Derived dynamicGet()
总结:
方法多态,数据成员不多态。
当Sub对象转型为Super引用时,任何域访问操作都由编译器解析,因此不是多态的。
在本例中super.field和sub.field分配了不同的存储空间。
这里Sub实际上包含两个称为field的域:它自己的和它从super处得到的。
然而,在引用sub中的field时所产生的默认域并非super版本的field域;
想得到supe.field,必须显示的指明super.field。
如果某个方法是静态的,它就不具有多态性,静态方法是与类,并非与单个对象相关联的。
过程:
Super sup = new Sub();
System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField());
Sub sub = new Sub();子类转化为基类,sup.field实际指的基类super的field=1;sup.getField()多态性,指的是sub的field为0
输出:
sup.field = 0, sup.getField() = 1
Sub sub = new Sub();
System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField());
sub.field实际指的自己的类sub的field=1;sup.getField也指的是自己sub的field为1
输出:
sup.field = 1, sup.getField() = 1
System.out.println(sup.staticGet());
System.out.println(sup.dynamicGet());
如果某个方法是静态的,它就不具有多态性,静态方法是与类,并非与单个对象相关联的。
输出:
Base staticGet() Derived dynamicGet()
java 普通方法_Java普通方法与static方法的多态相关推荐
- 是否可以从一个static方法内部发出对非static方法的调用?
*问题:是否可以从一个static方法内部发出对非static方法的调用? * * 答:不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后, * 才可以在 ...
- 一个static方法内可以调用非static方法吗?
不可以. 因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用. 也就是说,当一个 static ...
- java测试类 main方法_Java使用agent实现main方法之前的实例详解
Java使用agent实现main方法之前的实例详解 创建Agent项目 PreMainExecutor 类,在main方法之前执行此方法 public class PreMainExecutor { ...
- java linkedlist 方法_Java LinkedList getFirst()方法与示例
LinkedList getFirst()方法 (LinkedList getFirst() method) This method is available in package java.util ...
- java 线程安全_Java创建线程安全的方法
原文链接 译者:秦建平 校对:方腾飞 首先来看一个问题: 下面这个方法是线程安全的吗?如何才能让这个方法变成线程安全的? public class MyCount { private static i ...
- java listfiles 使用_Java中list()和listFiles()方法之间的区别
java.io包的名为File的类表示系统中的文件或目录(路径名).为了获得目录中所有现有文件的列表,此类提供了list()和ListFiles()方法. 它们之间的主要区别是该列表()方法返回一个字 ...
- java clone方法_java安全编码指南之:方法编写指南
简介 java程序的逻辑是由一个个的方法组成的,而在编写方法的过程中,我们也需要遵守一定的安全规则,比如方法的参数进行校验,不要在assert中添加业务逻辑,不要使用废弃或者过期的方法,做安全检查的方 ...
- java stringbuilder清空_Java中StringBuilder的清空方法比较
StringBuilder 没有提供clear或empty方法. 清空有3种方法: 1)新生成一个,旧的由系统自动回收 2)使用delete 3)使用setLength 将三种方法循环1000万次,代 ...
- java file用法_Java File 类的使用方法详解(转)
转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...
- 【JAVA】接口中的default和static方法
接口中方法都为抽象方法. 这句话在JAVA8之前是对的,在JAVA8之后就错了 传统的理解是接口只能是抽象方法.但是程序员们在使用中,发现很不方便,实现接口必须重写所有方法,很麻烦.所以java设计者 ...
最新文章
- 150m虚拟主机容量不足
- idea + maven + profile + tomcat 调试 javaee 和js
- Oracle PL/SQL进阶
- 12C 新特性 | 标量子查询自动转换
- 【CCCC】L3-005 垃圾箱分布 (30分),Dijkstra跑n遍 = 多源最短路,emm
- 隐藏activity的头部的activity名
- Linux批量更改文件后缀名
- Linux的NFS(net file systen)
- netty权威指南 微云_《Netty权威指南》(一)走进 Java NIO
- 函数声明和函数表达式的区别
- PTA:设计一个风扇Fan类 (20 分)
- JAVA练习题38:正则表达式基本练习
- Python必会的12道面试题,看看你会几题?
- 1. Emacs使用本地elpa镜像
- DLL的远程注入技术详解
- 开始读Python Crash Course读书笔记
- 01-pie小游戏(基本图形的绘制)
- [转帖]前端-chromeF12 谷歌开发者工具详解 Sources篇
- 如何通过通达信接口获取最近的分钟级别行情数据?
- 云控sdk服务端接口
热门文章
- NSString字符串处理
- Android ADT 无法在线安装,离线下载ADT压缩包方法。SDK Manager无法更新
- js基础-19-判断图片加载完成的方法
- bootstrap学习笔记-(1-初识bootstrap)
- c语言程序设计的例题,C语言程序设计例题与习题--详细介绍
- 计算机应用计算专业难吗,计算机应用专业好学吗
- python字符串介绍_Python字符串详细介绍
- Springboot属性配置绑定
- HTTP的概念以及请求消息的数据格式
- flex 连接mysql数据库_Flex+blazeds实现与mySQL数据库的连接(已成功实现此文的例子)...