`
breadfruit
  • 浏览: 1302 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

java构造函数调用构造函数

阅读更多
java构造函数调用构造函数时,通过保留字this调用本类其他构造函数,super调用父构造函数。并且调用必须置于该构造函数的首句。
错误的写法:
public PropertiesLoader(String path){
		prop = new Properties();
		File file = new File(path);
		InputStream is;
		try {
			is = new FileInputStream(file);
			prop.load(is);
		} catch (FileNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (IOException e) {
			System.err.println(e.getMessage());
		}
	}
	
	public PropertiesLoader(String path , boolean absolute){
		if(!absolute)
			path = System.getProperty("user.dir") + File.separator + path ;
		this(path);//Constructor call must be the first statement in a constructor
		//If you follow the norms, would be unable to achieve the desired effect. 
	}

正确的写法:
public PropertiesLoader(String path){
		this(path,true);//Constructor call must be the first statement in a constructor
	}
	
	public PropertiesLoader(String path , boolean absolute){
		if(!absolute)
			path = System.getProperty("user.dir") + File.separator + path ;
		
		prop = new Properties();
		File file = new File(path);
		InputStream is;
		try {
			is = new FileInputStream(file);
			prop.load(is);
		} catch (FileNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (IOException e) {
			System.err.println(e.getMessage());
		}
	}

注意,正确的写法与我们正常的编写一个方法的不同,按照习惯,我们喜欢通过一些判断,调用一个简单的重载方法。
还是实现以上功能我们一般写法是这样的:
public Properties loader(String path){
		Properties prop = new Properties();
		File file = new File(path);
		InputStream is;
		try {
			is = new FileInputStream(file);
			prop.load(is);
		} catch (FileNotFoundException e) {
			System.err.println(e.getMessage());
		} catch (IOException e) {
			System.err.println(e.getMessage());
		}
		
		return prop;
	}
	
	public Properties loader(String path , boolean absolute){
		if(!absolute)
			path = System.getProperty("user.dir") + File.separator + path ;
		return loader(path);
	}

对于普通方法,我们习惯实现一个简单的方法,通过增加一些判断条件,对原有方法进行重载。
而对于构造函数,由于java规则的限制,我们的做法是相反的,即在一个带有多参数的函数中实现所有的条件和功能,构造一个参数较少的构造函数对复杂的函数进行调用,传入一个特定的参数。
分享到:
评论

相关推荐

    Java继承时构造函数的调用

    总结一下,Java继承中的构造函数调用规则如下: - 子类在实例化时,总会在其构造函数的第一行隐式或显式调用父类的构造函数。 - 如果父类没有无参数构造函数,且子类构造函数没有显式调用父类的有参构造函数,编译器...

    聚合中类的构造函数调用顺序

    在这个主题中,“聚合中类的构造函数调用顺序”是一个关键概念,尤其是在多层嵌套的对象创建时。理解这个顺序对于编写健壮、无错误的代码至关重要。 首先,让我们明确构造函数的作用。构造函数是类的一个特殊方法,...

    Java构造函数的相互调用代码示例

    Java构造函数的相互调用代码示例 Java构造函数的相互调用代码示例是Java编程中的一个重要知识点。通过使用this关键字,可以在一个构造函数中调用另一个构造函数,以减少代码量。下面是相关的知识点: 1. 构造函数...

    Java继承时构造函数的调用[借鉴].pdf

    Java继承时构造函数的调用机制是:子类的构造函数需要调用父类的构造函数,父类的无参数构造函数是默认的,如果父类没有提供无参数构造函数,而提供了其他类型的构造函数,那么编译器将报错。因此,我们最好给父类...

    Java构造函数的继承问题[收集].pdf

    以下是关于Java构造函数继承问题的关键知识点: 1. **继承默认构造函数**: - 子类只能继承父类的无参数(默认)构造函数。如果父类没有无参数的构造函数,那么子类无法直接继承任何构造函数。 - 缺省构造函数是...

    java私有构造函数

    1. **工厂模式**:通过将构造函数设置为私有,可以实现一个工厂方法来代替直接的构造函数调用。这种方法允许类的内部逻辑控制如何创建对象,同时保持了类的封装性。例如,可以通过一个静态工厂方法`makeShape()`来...

    构造函数的继承问题 笔记

    根据题目中的描述,我们可以总结出关于构造函数调用的一些关键规则: 1. **默认构造函数的自动调用**:如果父类没有任何显式声明的构造函数,则编译器会为父类自动生成一个默认构造函数。当子类的构造函数被调用时...

    java构造函数及相关知识[借鉴].pdf

    Java构造函数是编程中至关重要的概念,特别是在面向对象编程中。它们主要用于初始化新创建的对象的状态。构造函数在类中定义,其名字与类名完全相同,并且没有返回类型,连void也不包含。当通过`new`关键字创建一个...

    构造函数与静态块的执行顺序

    在Java中,如果子类没有显式地调用父类的构造函数,那么会默认调用父类的无参构造函数。 通过分析给定的代码示例,我们可以清晰地看到这一执行顺序: ```java // Person类的静态块 thisisperson'sstatic // ...

    18_构造函数 视频

    构造函数可以通过链式调用来组合使用,即一个构造函数调用另一个构造函数,这有助于代码复用和简化初始化过程。例如,一个构造函数可以调用另一个具有不同参数的构造函数,通过`this(参数列表)`来实现。 在Java中,...

    java构造函数示例(构造方法)

    Java构造函数是面向对象编程中的一个关键概念,用于在创建对象时初始化对象的状态。当我们创建一个类的实例时,构造函数会被自动调用,它允许我们设置对象的初始属性值,确保对象在创建后处于一个合理的状态。在这个...

    面向对象-构造函数-调用&内存图解

    总结来说,"面向对象-构造函数-调用&内存图解"涵盖了构造函数在对象创建过程中的角色,以及构造函数调用如何影响内存分配和对象实例化。理解这些概念对于编写高效、健壮的面向对象代码至关重要,特别是在处理大量...

    构造函数继承.关于java

    2. **构造函数调用顺序**:在子类构造函数中,必须先调用父类的构造函数(使用`super`),然后再执行子类构造函数中的其他代码。 3. **构造函数的可访问性**:子类只能访问具有相同或更宽松访问级别的父类构造函数。...

    java使用this调用构造函数的实现方法示例

    java使用this调用构造函数的实现方法示例 java是一种广泛应用于软件开发的高级编程语言,而面向对象程序设计是java的核心思想之一。在java中,构造函数是一种特殊的方法,用于初始化对象的状态,而this关键字是java...

    Java构造函数与普通函数用法详解

    2. 通过new调用构造函数初始化对象。 五、普通函数和构造函数的区别 普通函数和构造函数是两种不同的函数,它们的用法和特点如下: 普通函数: * 普通函数可以是static的,也可以是非static的。 * 普通函数可以...

    枚举类型与构造函数.doc

    枚举类型与构造函数 枚举类型是一种特殊的数据类型,它可以在程序中定义一组固定的常量,...枚举类型和构造函数是Java中两种重要的概念,枚举类型可以定义一组固定的常量,而构造函数可以用于初始化对象的实例变量。

    Java:构造函数与对象

    ### Java:构造函数与对象 #### 第一章:构造函数揭秘——创造者的第一次触碰 在Java编程语言中,构造函数扮演着极其重要的角色。它是一种特殊的成员方法,主要用于对象的初始化过程。构造函数没有返回类型,其...

    构造函数借鉴.pdf

    3. 父类构造函数的调用:在子类的构造函数中,如果没有显式调用父类的构造函数,那么系统会默认调用父类的无参构造函数。如果父类没有无参构造函数,编译器会报错,因为子类无法执行必要的初始化步骤。 4. 显式调用...

    深入理解java构造器机理

    “深入理解Java构造器机理” 在 Java 编程语言中,构造器是一种特殊的方法,用于初始化对象的创建。它是 Java 类中最重要的一个概念。下面将深入讨论构造器的机理、执行顺序、作用及与其他概念的区别。 一、构造器...

Global site tag (gtag.js) - Google Analytics