java 笔试题-网易类的初始化的笔试题

问题描述

网易类的初始化的笔试题

public class Father {

public static String desc = "Father";
static {
    System.out.println(desc);
}
Father(){
    System.out.println("Father Constructor");
}
String str = fun();
public String fun(){
    System.out.println("Father not static");
    return "Father not static";
}

}



public class Child extends Father{

    public static String desc = "Child";
    static {
        System.out.println(desc);
    }
    Child(){
        System.out.println("Child Constructor");
    }
    String str = fun();
    public String fun(){
        System.out.println("Child not static");
        return "Child not static";
    }

    public static void main(String[] args) {
        Child c = new Child();
    }
}

请问输出是什么,为什么,
我测试的输出:
Father
Child
Child not static
Father Constructor
Child not static
Child Constructor
关于Father static为什么不出来我不懂,求帮助

解决方案

初始化顺序为:
类初始化:按出现顺序初始化静态类成员、static块
类实例初始化:按出现顺序初始化实例成员初始化和按规则调用构造方法
父类实例初始化过程中,由于实例化的是子类Child,父类的str对象在初始化过程中调用的fun()实际上是子类的重写方法,而并非父类声明的fun(),如果把父类的fun和子类的fun改为不同的简单名称,比如父类改为fun2(),那么就会输出Father not static而非Child not static

时间: 2024-08-31 05:21:38

java 笔试题-网易类的初始化的笔试题的相关文章

java中为什么只进行一个初始化就会执行类中的函数

问题描述 java中为什么只进行一个初始化就会执行类中的函数 import java.awt.*;import javax.swing.*;import java.awt.event.*;public class E2 extends Frame{ class WindowCloser extends WindowAdapter { public void windowClosing(WindowEvent we) {System.exit(0); } } E2() { super(""

java 初始化-Java类的初始化顺序问题

问题描述 Java类的初始化顺序问题 一般在Java对象能够调用方法之前,此类中的成员变量就已经初始化完毕,那如果这个成员是匿名内部类呢?也会等到这个匿名内部类中的代码全部跑完吗? 解决方案 Java初始化顺序1在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入)2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完成静态动作(包括静态代码和变量,它们的级别是相同的,安装代码中出现的顺序初始化)4,装载子类B后,完成静态动作类装载完成,

java笔记一:类成员的初始化顺序

最近一直在看<thinking in java>一书,感觉里面东西讲的很细,很多东西都没有接触过,是值得各位java程序员仔细品味的一本好书. 今天看了关于类成员初始化那节,以前对于成员初始化顺序没有考虑那么多,没有在意初始化的顺序.今天特意仔细研究了一番. 一个类中,最首先被初始化的是静态成员,也就是有关键字static修饰的成员.只要一个类被使用也就是创建对象或者调用了该类的某个静态方法时静态成员就都会被初始化,并且静态数据在内存中只占用一份存储区域,无论创建多少个对象,静态数据被所有对象

《Java程序员面试秘笈》—— 面试题10 类继承的建模表示方法

面试题10 类继承的建模表示方法 Java程序员面试秘笈根据图1.4的UML表示,选择一个正确的描述. (a)Box类是MyBox类的子类. (b)Box类是MyBox类的父类. (c)Box类和MyBox类是聚合关系. (d)Box类和MyBox类是一对多关系. 考点:该面试题貌似简单,在实际的面试中回答正确的却并不是很多,其实只是考察求职者对类的继承的建模表示方法的掌握程度. 出现频率: [面试题解析]Java中有两种机制来保证根据现有的类来构造新的类,那就是继承和聚合.例如,有一个盒子的类

java日记(3) 类的初始化问题(CSDN一个问题有感)

问题 我在原问题上加了一个输出"7":便于说明父类初始化的时间: public class Test2 extends Test1 { { System.out.print("1"); } Test2() { System.out.print("2"); } static { System.out.print("3"); } { System.out.print("4"); } public static

java的md5加密类(zt)

加密 java的md5加密类 MD5算法是将数据进行不可逆加密的算法有较好的安全性,在国内如寿信的安全支付平台就采用此算法. 源代码如下/************************************************MD5 算法的Java BeanLast Modified:10,Mar,2001*************************************************/ import java.lang.reflect.*; /************

Java基础-Java语言的Socket类详细介绍

线性表,链表等是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Ele

JAVA学习之“复用类”

1. toString() 每一个非基本类型都有一个toString()方法:当编译器需要从对象获取一个string时,该对象的toString()方法就会被调用. 示例: class WaterSource { private String s; WaterSource() { s = "WaterSource Constructed"; } public String toString() {return s;} public static void main(String[] a

成员变量-如何让JAVA不自动回收某个类中的变量?

问题描述 如何让JAVA不自动回收某个类中的变量? 我的一个web应用中 初始化的时候会给一个类中的静态成员变量赋值,然后隔一段时间会改变成员变量中的值,这样java会自动回收吗?如果长时间不改变成员变量的值会给我回收掉吗?如果回收的话有什么办法可以不让他回收? 解决方案 静态类本身不会回收,但是如果你的程序运行在容器中(比如web程序),而容器本身会回收,这种情况相当于关闭了你的程序.那么当然这些变量全部都没有了. 你有两个办法,一个是根据容器的约定,阻止它回收.比如说容器规定,10分钟没有用