关于内部类是否会被覆盖的理解(thinking in java )

 1 package thinkingDemo;
 2 /*
 3  *
 4  * 关于嵌套类覆盖问题
 5  *
 6  */
 7 class Egg2 {
 8     protected class Yolk{
 9         public Yolk(){
10             System.out.println("Egg2.Yolk()");
11         }
12         public void f(){
13             System.out.println("Egg2.Yolk.f()");
14         }
15     }
16     private Yolk y = new Yolk() ;
17     public Egg2(){
18         System.out.println("New Egg2()");
19     }
20     public void insertYolk(Yolk yy){
21         y = yy ;
22     }
23     public void g(){
24         y.f() ;
25     }
26 }
27 class BigEgg2 extends Egg2 {
28     public class Yolk extends Egg2.Yolk {
29         public Yolk(){
30             System.out.println("BigEgg2.Yolk()");
31         }
32         public void f(){
33             System.out.println("BigEgg2.Yolk.f()");
34         }
35     }
36     public BigEgg2(){
37         insertYolk(new Yolk()) ;
38     }
39 }
40 public class NestClassOverride {
41     public static void main(String[] args) {
42         Egg2 e2 = new BigEgg2() ;
43         e2.g() ;
44     }
45 }

执行结果:

Egg2.Yolk()

New Egg2()

Egg2.Yolk()

BigEgg2.Yolk()

BigEgg2.Yolk.f()

由此可得: 内部类不会被覆盖

时间: 2025-01-14 00:21:02

关于内部类是否会被覆盖的理解(thinking in java )的相关文章

Atitit  深入理解命名空间namespace  java c# php js

Atitit  深入理解命名空间namespace  java c# php js 1.1. Namespace还是package1 1.2. import同时解决了令人头疼的include1 1.3. 在不支持ns的语言里面使用ns,前缀发1 1.4. 常用命名空间的统计(约150个)1 1.5. 命名空间2 1.5.1. 在struts2中2 1.6. Linux 就支持6种不同类型的命名空间.2 1.1. Namespace还是package 1.2. import同时解决了令人头疼的in

深入理解和探究Java类加载机制-

深入理解和探究Java类加载机制---- 1.java.lang.ClassLoader类介绍 java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个Java 类,即 java.lang.Class类的一个实例. ClassLoader提供了一系列的方法,比较重要的方法如: 2.JVM中类加载器的树状层次结构 Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写

深入理解Android之Java Security第二部分(Final)

深入理解Android之Java Security(第二部分,最后) 代码路径: Security.java:libcore/lunl/src/main/java/java/security/ TrustedCertificateStore.java:libcore /crypto/src/main/java/org/conscrypt/ CertInstallerMain:package/apps/CertInstaller/src/com/android/certinstaller/ Cre

深入理解Android之Java Security第一部分

深入理解Android之Java Security(第一部分) 从事Android工作4年以来,只有前1年不到的时间是用C++在开发东西(主要是开发DLNA组件,目前我已将它们全部开源,参考http://blog.csdn.net/innost/article/details/40216763),后面的工作几乎都在用Java.自以为Java相关的东西都见过了,可前段时间有个朋友给我花了1个多小时讲解他们某套系统的安全体系结构,其中涉及到很多专业术语,比如Message Digest(消息摘要).

理解和解决Java并发修改异常ConcurrentModificationException(转载)

原文地址:https://www.jianshu.com/p/f3f6b12330c1 理解和解决Java并发修改异常ConcurrentModificationException 不知读者在Java开发的过程中有没有遇到类似的异常信息 Exception in thread "main" java.util.ConcurrentModificationException, 下面小编简单介绍异常原因以及这种异常的改进方法,内容很简单,有什么问题还望指正. 假设我们要实现这样一个例子:

软件测试作业3:图覆盖的理解及应用

程序代码如下: 1 /******************************************************* 2 * Finds and prints n prime integers 3 * Jeff Offutt, Spring 2003 4 ******************************************************/ 5 public static void printPrimes (int n) 6 { 7 int curPrim

[转载] 深入理解Android之Java虚拟机Dalvik

本文转载自: http://blog.csdn.net/innost/article/details/50377905 一.背景 这个选题很大,但并不是一开始就有这么高大上的追求.最初之时,只是源于对Xposed的好奇.Xposed几乎是定制ROM的神器软件技术架构或者说方法了.它到底是怎么实现呢?我本意就是想搞明白Xposed的实现原理,但随着代码研究的深入,我发现如果不了解虚拟机的实现,而仅简单停留在Xposed的调用流程之上,那真是对Xposed最大的不敬了.另外,歪果仁为什么能写出Xpo

深入理解JMM(Java内存模型) --(四)volatile

volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步.下面我们通过具体的示例来说明,请看下面的示例代码: [java] view plain copy class VolatileFeaturesExample { volatile long vl = 0L;  //使用volatile声明64位的long型变量 public

深入理解JMM(Java内存模型) --(三)顺序一致性

数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.Java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此).如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序. JMM对正确同步的多线程程序的内存一致性做了如下保证: 如果程序是正确同步的,程序的执行将具有顺序一致性(sequentially consistent)-