介绍

JAVA 【引用类型】和【对象类型】在【继承】中的异同。这个问题自己整理过N次。也被人当菜鸟问过N次。所以,在此简单整理一下。以供大家分享。

  • 在继承关系中。一般成员变量是依据引用类型
  • 在继承关系中。静态成员变量是依据引用类型
  • 在继承关系中,一般方法是依据对象类型
  • 在继承关系中,静态方法是依据引用类型

注意

静态成员变量,静态方法是基于类的,本文为了測试观察。所以。会用对象去引用静态成员变量和静态方法。

Super Class:

package shuai.study.inherit;public class SuperClass {public String commonString = "SuperClass Common String";public static String staticString = "SuperClass Static String";public int otherCommonInt = 0;public static int otherStaticInt = 10;public void commonMethod() {System.out.println("SuperClass Common Method: " + commonString);}public static void staticMethod() {System.out.println("SuperClass Static Method: " + staticString);}public void otherCommonMethod() {System.out.println("SuperClass Other Common Method: " + otherCommonInt);}public static void otherStaticMethod() {System.out.println("SuperClass Other Static Method: " + otherStaticInt);}
}

Suber Class:

package shuai.study.inherit;public class SuberClass extends SuperClass {public String commonString = "SuberClass Common String";public static String staticString = "SuberClass Static String";@Overridepublic void commonMethod() {System.out.println("SuberClass Common Method: " + commonString);}public static void staticMethod() {System.out.println("SuberClass Static Method: " + staticString);}
}

Test Class:

package shuai.study.inherit;public class Test {public static void main(String[] args) {SuperClass superClass = new SuberClass();// Common member variable is according to quote typeSystem.out.println(superClass.commonString);// Static member variable is according to quote type// Generally we invoke static member as SuperClass.staticString, because static method & variable is based on classSystem.out.println(superClass.staticString);// Common method is according to object typesuperClass.commonMethod();// Static method is according to quote type// Generally we invoke static method as SuperClass.staticMethod(), because static method & variable is based on classsuperClass.staticMethod();System.out.println("==================================================");SuberClass suberClass = new SuberClass();// Inherit member variable from super classSystem.out.println(suberClass.otherCommonInt);System.out.println(SuberClass.otherStaticInt);// Inherit method from super classsuberClass.otherCommonMethod();SuberClass.otherStaticMethod();// Self methodsuberClass.commonMethod();SuberClass.staticMethod();}}

Output:

SuperClass Common String
SuperClass Static String
SuberClass Common Method: SuberClass Common String
SuperClass Static Method: SuperClass Static String
==================================================
0
10
SuperClass Other Common Method: 0
SuperClass Other Static Method: 10
SuberClass Common Method: SuberClass Common String
SuberClass Static Method: SuberClass Static String

转载于:https://www.cnblogs.com/jzdwajue/p/6737013.html

JAVA 【引用类型】和【对象类型】在【继承】中的异同相关推荐

  1. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

  2. java方法区对象类型_浅谈Java内存区域与对象创建过程

    一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则 ...

  3. Java重写、super关键字、继承中的构造方法

    2.super 在Java类中使用super来引用基类的成分 备注:new 一个对象出来的时候,就有一个this 引用,引用指向对象自身:         如果对象是一个子类对象,就有一个super引 ...

  4. java方法传对象参数_Java方法中的参数太多,第2部分:参数对象

    java方法传对象参数 在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题. 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性. 这种方法使方法或构造函数 ...

  5. java引用类型和基本类型的比较

    引用类型和基本类型的分类,不在写了,网上有很多. 我们知道: 当两个基本类型使用"=="比较时,他们比较的是值. 当两个引用类型使用"=="比较时,他们比较的是 ...

  6. JAVA获取Class对象及其Class类中的常用方法

    反射: 反射是我们 经常用到的一个知识点,那什么是反射呢? 反射就是在程序运行过程中分析类的一种能力 在这里我们想一下我们在编写java的时候,先写java源文件-->字节码文件(class文件 ...

  7. java jsonobject 转对象_解析JSON中JSONObject的高级使用

    文末会有读者福利 简介: 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于 ...

  8. java怎么判断对象为空_java中怎么判断对象是否为空

    java中判断对象是否为空的方法: 首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的:另一种是org.springframework.u ...

  9. java hashmap 转对象_Java – 从HashMap中获取正确的转换对象

    我正在开发一个具有多个系统的应用程序(在我的例子中,系统是我的应用程序中的可加载组件,它处理特定任务,例如:翻译,配置处理,音频等--).这些系统共享一些常用方法,因此我创建了一个接口: public ...

  10. java memcached 存储对象_java – 从Memcache中获取低级别数据存储区实体对象时的慢速反序列化...

    事实证明,检索存储内存缓存的低级数据存储实体非常缓慢.由于objectify将实体缓存为低级数据存储区实体类型,因此当使用objectify从memcache中获取许多实体时,这会导致性能不佳. 真正 ...

最新文章

  1. PTP4L 简化版本OC模式
  2. 【 MATLAB 】模拟信号采样及离散时间傅里叶变换(DTFT)案例分析
  3. OutofMemory之PermGen介绍
  4. UVA10010 Where's Waldorf?
  5. numpy笔记 linalg
  6. 使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头
  7. Swift 使用WebKit动态执行javascript脚本
  8. raspberry 防火墙_用于数据科学,Linux防火墙,Raspberry Pi NAS,openmediavault,Syncthing,微服务等的Python库
  9. kdd数据集_learning from imbalanced data sets—第一章——KDD与数据科学概述
  10. (php毕业设计)基于php旅游信息网站管理系统源码
  11. c语言中结构体中默认值,C Struct中的缺省值
  12. 《马哥出品高薪linux运维教程》wingkeung学习笔记-linux基础入门课程
  13. 压缩包解压后的文件名是乱码怎么解决
  14. PostgreSQL - 如何杀死被锁死的进程
  15. 逆谐波滤波matlab,基于MATLAB仿真的SPWM逆变电路谐波分析及滤波器设计
  16. 巴比特 | 元宇宙每日必读:传腾讯成立XR部门,元宇宙板块再次上涨,多家券商发报告关注虚拟人的投资机会...
  17. 创意01:网上3D试衣间
  18. 惊了!原来 Web 发展历史是这样的
  19. Linux部署Oracle11gR2 RAC详细教程
  20. SQL语句的书写顺序和解析顺序

热门文章

  1. 洛谷P2134 百日旅行
  2. js实现小时钟,js中Date对象的使用?
  3. Xformode的坑
  4. 构建高性能WEB站点笔记二
  5. python虚拟机 基于寄存器_虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩...
  6. 计算机会计和传统手工会计的区别,手工会计与计算机会计之间的区别.doc
  7. JAVA常见业务参加解决方案_大话业务场景与解决方案-做任务
  8. STM32编程中枚举和结构体的结合
  9. 用函数模板实现选择排序算法_干货|STL容器和算法
  10. java 国家名称排序,我有一个国家名单。我想按字母顺序对它进行排序,除了两个我想放在第一位的国家...