JAVA技术专题综述之构造方法篇

类的继承机制使得子类可以使用父类的功能(即代码),并且子类也具有父类的类型。下面介绍类在继承关系上的初始化的顺序问题。

示例1:

class SuperClass
{
SuperClass()
{
System.out.println("SuperClass constructor");
}
}
public class SubClass extends SuperClass
{
SubClass()
{
System.out.println("SubClass constructor");
}
public static void main(String[] args)
{
SubClass sub = new SubClass();
}
}
输出结果: SuperClass
constructor
SubClass constructor

在子类中只实例化了一个子类对象。从输出结果上看,程序并不是一开始就运行自己的构造方法,而是先运行其父类的默认构造方法。注意:程序自动调用其父类的默认构造方法。

示例2:

class SuperClass
{
SuperClass(String str)
{
System.out.println("Super with a string.");
}
}
public class SubClass extends SuperClass
{
SubClass(String str)
{
System.out.println("Sub with a string.");
}
public static void main(String[] args)
{
SubClass sub = new SubClass("sub");
}
}

在JDK下编译此程序不能成功。正如上例中说的:程序在初始化子类时先要寻找其父类的默认构造方法,结果没找到,那么编译自然不能通过。

解决这个问题有两个办法:

1.在父类中增加一个默认构造方法。

2.在子类的构造方法中增加一条语句:super(str); 且必须在第一句。

这两种方法都能使此程序通过编译,但就本程序来说运行结果却不相同。

第1种方法的运行结果是:

Sub with a string.

第2种方法的运行结果是:

Super with a string.
Sub with a string.

第2种解决方法实际上是指定编译器不要寻找父类的默认构造方法,而是去寻找带一个字符串为参数的构造方法。

时间: 2024-08-02 15:35:04

JAVA技术专题综述之构造方法篇的相关文章

JAVA技术专题综述之内部类篇

有些类的定义中包含另一个类的定义.这种处于内部的类称为内部类(inner class). 例如: public class OuterClass { public class InnerClass { //---This is a inner class. } } InnerClass类嵌套在OuterClass中,并且被声明为public,因此被OuterClass类之外的对象访问. InnerClass类没有被声明为OuterClass类的一个静态成员,因此除非生成了一个OuterClass

JAVA技术专题综述之线程篇

编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield(),join() 还有一个重要的关键字:synchronized 本文将对以上内容进行讲解. 一:run()和start() 示例1: public class ThreadTest extends Thread { public void run() { for(int i=0;i<10;i++) { System.out.print(&qu

2005年Java技术年度综述:融合与开放

2005年是Java10诞生10年,全世界的Java程序员通过不同的方式为Java庆祝生日,10年前还很幼稚的小东西,今天已经成为软件业的一个重要体系.在10年的发展历程中Java阵营诞生了许多杰出的思想,这些思想演化成众多的开发架构和开发工具,也因此导致Java技术派系众多,让架构师难于选择,应用系统复杂而且昂贵.为了这解决这个问题,Java专家们们提出一系列的新的技术规范,这些技术的目的就是使Java更简单,不仅仅是Java语言,还包括开发工具和框架.融合与开放成为2005年Java发展的主

Java技术专题之JVM你的内存泄露了吗?

一.从一个例子开始 关于JVM的内存泄露,让我们从下面一个例子开始吧,大家来判断一下如果按照下面这种分配方式,会不会出现内存泄露呢? import java.util.List; import java.util.Vector; public class MemoryTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Vector vobj

Java技术专题之JVM逻辑内存回收机制研究图解版

一.引言 JVM虚拟机内存回收机曾迷惑了不少人,文本从JVM实现机制的角度揭示JVM内存回收的原理和机制. 一.Java平台逻辑架构 二.JVM物理结构 通过从JVM物理结构图我们可以看到: 1.JVM两个子系统:类加载子系统和执行引擎子系统: 2.JVM两个组件:本地接口方法组件和内存空间组件. 2.JVM内存空间分为:Java堆,Java栈.方法区和本地方法区 关键词:我们经常讨论的JVM内存回收机制就是指Java堆内存回收机制. 四.JVM内存组成结构 上图所示四部分即为JVM内存组成结构

2004开发技术年度综述之Java世界_JSP编程

    2004年Java世界发生了巨大变化,主要方面是诞生和发展了几个新名词:IOC .AOP.SOA.MDA,当然,除了这些都是决定Java技术未来走向的革命性发展以外,还有很多细部和微观的发展,我们先来谈谈这些重要的细节技术发展. 首先, Java的根基JDK已经跨越到了J2SE 1.5,或者称为J2SE 5.0,不过,我更喜欢称它为1.5,延续性是我们应用程序员更关心的,当然革命性是那些新技术发明者更陶醉的,所以他们曾经取名J2SE 2.0,现在,为了表示这种跨越,而且跨越是非常巨大,一

2004开发技术年度综述之Java世界

2004年Java世界发生了巨大变化,主要方面是诞生和发展了几个新名词:IOC .AOP.SOA.MDA,当然,除了这些都是决定Java技术未来走向的革命性发展以外,还有很多细部和微观的发展,我们先来谈谈这些重要的细节技术发展.

Java Web Framework综述

web Java Web Framework综述0.简介本文介绍Java Web Framework的基本工作原理,和一些常用的开源Web MVC Framework(Struts, Web Work, Tapestry, Echo, JSF, Maverick, Spring MVC, Turbine, Cocoon, Barracuda). Web开发的最重要的基本功是HTTP:Java Web开发的最重要的基本功是Servlet Specification.HTTP和Servlet Spe

XML 和 Java 技术: 数据绑定的多种用法

xml|数据 除将 XML 用作一种简单数据格式之外,数据绑定是 XML 最流行的用法之一.即使刚刚入门的程序员也能在一种原生编程语言中使用 XML,并且在大多数情况下完全不需要任何的 XML 专门知识.本文并不是介绍解决方案,取而代之,Brett 介绍了一些讨论主题,鼓励您思考如何使用 XML 和数据绑定.欢迎在 XML 和 Java 技术讨论论坛上与别人一起分享您的想法. XML 用于业务而非技术 随着 XML 的日趋盛行,人们也越来越注重可用性.换句话说,程序员和管理者并不希望把 XML