`
hai0378
  • 浏览: 529543 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java 子类对象实例化 面试题

阅读更多
子类对象实例化面试题,拿来给大家分享下了,希望指点哦
package com.gem.j2SE03;
abstract class A {
	private int x = 100;
	public A(){
		this.print();
	}
	public abstract void print();
}
class B extends A {
	
		private int x = 200;
		public B(int x){
			this.x = x;
		}
		public void print(){
			System.out.println("x=" + x);
		}
	}


public class TestJava
{
	private void mian()
	{
		A a = new B(20);

	}

}
答案:x=0
子类的实例化过程:应该是先调用父类中的构造方法,然后再执行子类中的自己的构造方法了,查了资料才看到的,学了不少哦

 

分享到:
评论
3 楼 emparadise329 2009-08-05  
进一步学习了子类与父类间的关系
2 楼 hai0378 2009-07-29  
有道理,又学习了新东西了,谢谢,大家共进步
1 楼 zhanglian123 2009-07-29  
A a = new B(20);  
这个时候a已经向上转型,只能看成A类型,不能看成B类型.
A的x,与B的x,作用范围不一样.

楼主:先调用父类中的构造方法,然后再执行子类中的自己的构造方法...这个是对的,就是这样.
A a =这个时候 x的时候是100,但是A构造器,调度print(); 由于B实现A类方法,这个时候,又会去调度B的print(); 但是这个时候并没有调度到B的构造器,导致B的x的没有赋值200,所以x=0;

A a = new B(20); 
的执行顺序:A的构造器,A的print()方法; B的print()方法;B的构造器.(而调度B的构造器才会赋值成功)
建议在把构造器在加一下下面语句,就会明白他们真正执行顺序.
public A(){  
        this.print();
        System.out.println("x=" + x);  
    } 
public B(){  
        this.print();
        System.out.println("x=" + x);  
    }

相关推荐

    java 面向对象面试题

    以下是一些基于Java面向对象的常见面试题及详细解答,帮助你深入理解这个主题。 1. **什么是面向对象编程?** 面向对象编程是一种编程范式,它将数据和操作数据的方法组织成独立的实体,即对象。这些对象通过交互...

    Java面试题以及答案整理.pdf

    `super()`用于调用父类的构造器,确保子类实例化时父类的初始化;`this()`则用于在同一个类中调用其他构造器。 2. **作用域 public, protected, private, 以及默认的区别** - `public`: 公共访问修饰符,可在任何...

    2023java最新阿里巴巴面试题,2023java最新阿里巴巴面试题

    以下是一些针对阿里巴巴2023年Java面试题的相关知识点: 1. **Java语言特点**: - **简单易学**:Java的设计目标是易于学习,其语法简洁,避免了C++等语言的复杂性。 - **丰富的类库**:Java拥有庞大的标准类库,...

    2017最新Java面试题

    ### 2017最新Java面试题知识点梳理 #### 一、面向对象编程(OOP) 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”的概念来组织代码结构。Java作为一种典型的面向对象语言,支持...

    2010华为java面试题华为java面试题华为java面试题华为java面试题华为java面试题

    构造器(constructor)用于初始化类的新实例,其名称必须与类名相同,并在创建新对象时调用。 3. **数据类型与变量**:Java支持多种数据类型,包括基本数据类型如整型(int)、字符型(char)、布尔型(boolean)等...

    史上最全Java面试题目大集合

    整理了网上的一些java面试题目,很全很强大 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面。抽象并不5. 打算了解全部问题...

    2024年Java基础面试题,附带详细解析答案

    ### 2024年Java基础面试题及解析 #### 1. 什么是 Java? **答案解析:** Java 是一种广泛使用的高级编程语言,由 Sun Microsystems 在 1995 年开发并发布。它的主要特点包括面向对象、平台独立性、安全性、可移植...

    Java后端面试题

    ### Java面试题知识点概览 #### 面向对象概念 1. **super()与this()的区别**: - `super()`用于调用父类的构造方法或父类成员方法。 - `this()`用于调用本类中的其他构造方法。 2. **作用域public, protected, ...

    2024java面试题.pdf

    - Java 堆是 JVM 所管理的最大内存区域,主要用于存放对象实例。 - GC(Garbage Collection)机制负责自动回收堆内存中不再被使用的对象,以避免内存泄漏和溢出问题。 #### 四、设计模式与框架 1. **单例模式...

    java面试题,技术面试与设计模式

    - 工厂方法:定义一个创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 2. 结构型模式 - 适配器模式:将不同接口的类进行匹配,...

    10万字总结java面试题和答案(八股文之二).pdf

    以下是针对Java面试题的一些关键知识点的详细解析: 1. **Java语言特点**: - **简单易学**:Java设计时考虑了C++的复杂性,简化了许多语法,使得学习曲线较为平缓。 - **丰富的类库**:Java拥有庞大的标准类库,...

    华为JAVA面试题

    根据提供的文件信息,以下是对华为2018年深圳Java面试题知识点的详细解析: 1. Java修饰符及其使用机制 Java语言中,修饰符主要有以下几种:public、abstract、final、synchronized、static和super。这些修饰符...

    JAVA相关基础知识(面试题)

    【JAVA相关基础知识(面试题)】 1. 面向对象的特征: - 抽象:抽象是将复杂的问题简化,关注核心功能,忽略不重要的细节。它分为过程抽象和数据抽象,前者关注方法,后者关注数据结构。 - 继承:继承允许创建新的...

    JAVA面试题解惑系列合集

    《JAVA面试题解惑系列合集》这篇文章详细地讨论了Java面试中常见的一些知识点和问题。它包括了从类的初始化顺序、String对象的创建数量、变量的覆盖、final关键字、传值和传引用的区别、字符串的处理、日期和时间的...

    java面试题(精简)

    在Java编程语言中,面试题通常涵盖了许多核心概念和技术,以下是一些基于提供的面试题的知识点详解: 1. **访问修饰符的区别**: - `public`:任何类都可以访问。 - `protected`:同一包内及子类可以访问。 - `...

    java面试题及答案(基础题122道,代码题19道).doc

    在Java编程语言中,面试题通常涵盖了许多核心概念和技术,以评估候选人的理解和技能水平。以下是一些基于给定文件的Java基础知识和重要知识点的详细解释: 1. **面向对象的特征** - **抽象**:抽象是面向对象编程...

    Java复习大纲面试题.doc

    【Java复习大纲面试题】 1. **Java命令行工具**: 编译Java程序使用`javac`命令,例如`javac *.java`来编译所有.java源文件。运行Java程序使用`java`命令,指定类名,如`java 类名`。 2. **JDK与JRE的区别**: ...

    Java面试题和工厂模式

    Java作为一门广泛应用的编程语言,其面试题涵盖了语法基础、面向对象编程、集合框架、多线程、异常处理、IO流、网络编程、设计模式等多个方面。面试官通常会通过这些题目来评估候选人的编程基础、问题解决能力和实际...

    深圳各公司java面试题

    ### 深圳各公司Java面试题精要解析 #### 中联宏达 - Struts面试题解析 **1. 如何定义FormBean?** FormBean是Struts框架中用于封装表单数据的类,通常继承自`org.apache.struts.action.ActionForm`。定义FormBean...

Global site tag (gtag.js) - Google Analytics