`
北堂泠川
  • 浏览: 9943 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

构造方法的特点,它与一般方法的区别

 
阅读更多

 

首先,我们介绍一下Java中的一种特殊的方法:构造方法。

1.  Java中的构造方法又叫做构造函数,构造器(构造器方法)。构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。

当类在创建实例时 new 动作时要执行的方法,如果类中没有定义构造方法 ,java编译器会为类自动添加一个构造方法。也就是当类生成对象时,系统在生成对象中利用的方法。

构造方法的几个特点:

1)、构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。

2)、构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。

3)、每个类可以有零个或多个构造方法.

4)、不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。

5)、构造方法在创建对象时自动执行,一般不能显式地直接调用.

6)、构造方法可以被重载。没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。

2.  构造方法的格式:

public 构造方法名(数据类型 参数名,...){

//代码

}

构造方法的用途:

用来实例化对象的。

类名 对象名 = new 构造方法名[类名](参数值,...);

3. 构造方法的分类

在类中,构造方法以三种形式存在。

首先就是Java提供的默认构造器。当程序中没有显式定义构造方法时,生成类的实例对象时就使用该类的默认构造方法。而默义的构造方法是不带参数的,也没有程序体。

一旦我们显式定义了一个构造方法,无论它是否携带参数,默认的构造方法就自动丢失了。因此,构造器的第二种形式就是程序员定义的不带参数的构造方法,它不可以重复定义,而且即使它也没有程序体,它与默认的构造方法仍然是两个不同的概念。

第三种形式 是我们定义的带参数的构造方法。其中带参数的构造器会因为参数个数的不同、参数顺序的 不同、参数类型的不同而可以定义多个。当一个类有多个构造方法时,我们称之为“构造方法的重载”。

4. 一个类的不同构造方法之间的调用

如前述,一个类可以有多个构造方法,在这多个构造方法之间是可以产生调用关系的。只不过在一个构造方法中只能调用一次、一个其它的本类构造方法,而且必须将这个调用语句放在该构造方法语句的第一句,否则,将无法通过编译。

 

 

/**
 * 定义一个类A 	
 * @author wang
 *主函数,程序的入口
 */
public class A {
	public static void main (String args [] ){
		int n = 8;
		A a = new A (n);//实例化一个A的对象
		}
	public A( )//这是我们自己定义的一个无参构造函数
	{
		System.out.println("This constructor of A has not Parameter.");//打印这句话
		}
	public A( int i ){//带参构造方法,调用的是上一个A的无参构造方法
		this();//这是非常关键的调用语句。
		System.out.println("This constructor of A has parameter,it is"+"  "+i);}
	}	

 此程序输出的结果为:

 

This constructor of A has not Parameter.

This constructor of A has parameter,it is  8

 

 

 

5. 类与类之间构造方法的调用

假设程序员编写了多个彼此间既无继承关系,也无包含关系的类。那么当各个类之间产 生调用关系(不失一般性,假设类 A类需使用类 B的对象)时,构造方法的调用是必然的。只不过 这个调用比较简单,它只须在类A中根据需要正确地使用类 B的合适构造方法创建一个类 B的对象即可。

 

 

6. 子类与其父类构造方法的调用 在Java中,子类创建对象时,会自动调用其父类不带参数的构造方法。也就是说,使用子类的任何一种形式的构造方法(无论带参数与否)来创建一个实例对象时,都会自动调用其父类 不带参数的构造方法。如果这个类是层层继承下来的,则这个调用会回溯至级别最高的父类类,然 后依次调用这棵继承树的各类的无参构造方法。

例:

 

public class A{
	public A() {
		}
	{
	System.out.println("This is the constructor of class A .");
	}
	public A (int n){
	System.out.println("This is the constructor of classA ,it sparameter is"+ "  "+n);
			}
	}
	

 

 

 

 public class AA extends A{
	public AA(){
		System.out.println("This is the constructor of class AA.");
		}
	public AA (int n)
	{
		System.out.println("This is the constructor of class AA,it sparameter is "+"  "+n);
	}
	}
 

 

 

public class AAA extends AA{
	public AAA()
	{
		System.out.println("This is the constructor of classA AA .");
	}
	public AAA (int n)
{
	System.out.println("This is the constructor of class ,it sparameter is"+n+".");
	}
	public static void main (String args [] ){
		int m =20;
		AAA childl = new AAA () ;
		AAA child2 = new AAA (m);
		}
	}																	                 该例的运行结果如下:

 运行结果:

this is the constructor of classA

 

This is the constructor of classAA

 

this is the constructor of classAAA.

 

this is the constructor of classA

 

this is the constructor of classAA

 

     this is the constructor of classAAAits parameter is 20

 

在这里应注意一个问题:当使用子类构造方法时一定要保证其各级父类类无参构造方法的存在 与正确性。显然在上例中。如果没有定义类 A与类AA的无参构造器是无法通过编译的。

总起来说,在Java中,构造方法是一个非常基本而重要的内容,对它的理解与正确使用对 于帮助人们进一步搞清JAVA的面向对象的特征有着重要的意义。

 

 

 

 

分享到:
评论

相关推荐

    IOS之构造方法与自定义构造方法的区别与实现

    本文将深入探讨默认构造方法(无参构造方法)与自定义构造方法的区别与实现。 首先,让我们理解一下构造方法的基本概念。在Objective-C中,构造方法通常以`init`开头,它们的目的是初始化类的实例变量。默认的构造...

    c#面向对象静态类、构造方法、静态方法介绍.zip

    在C#编程中,面向对象是核心特性之一,它提供了静态类、构造方法以及静态方法等概念,这些是创建高效、可维护代码的关键元素。让我们深入探讨这些知识点。 首先,静态类是C#中不能被实例化的类,它们只包含静态成员...

    java中构造方法和普通方法的区别说明

    在Java编程语言中,构造方法和普通方法是两种不同的函数,它们各自有着特定的作用和特点。下面我们将详细探讨这两者之间的区别。 首先,我们来看**普通方法**。普通方法是类中定义的一段代码,用于执行特定的任务。...

    java中的继承(子类调用父类构造方法还不懂).doc

    本文详细介绍了Java中的继承机制,重点讨论了子类如何调用父类构造方法、重写与重载的区别、多态的应用以及`instanceof`操作符的使用。理解这些概念对于编写高质量、可维护的Java代码至关重要。

    浅谈C# 构造方法(函数)

    - 初始化器与构造方法的主要区别在于: - 初始化器是非强制性的,而构造方法是必需的。 - 初始化器仅用于属性赋值,构造方法可以包含更复杂的逻辑。 - 初始化器的执行顺序在调用构造方法之后。 理解并熟练运用...

    互联网地理信息系统的构造方法.pptx

    【互联网地理信息系统构造方法】 互联网地理信息系统(WebGIS)是信息技术与地理信息系统(GIS)的融合,它利用Web技术提供空间数据的发布、查询检索、空间模型服务等功能,实现了地理信息的全球性、分布式共享。...

    java面向对象测试题含答案.docx

    10. 构造方法的特点:构造方法用于对象的初始化,构造方法的名称必须与类名相同,构造方法可以重载,构造方法可以有参数也可以没有参数。 11. 对象的创建:对象的创建需要使用new关键字,new关键字用于创建对象。 ...

    合肥工业大学JAVA程序设计问答题.pdf

    构造方法特点:a.构造方法与类名相同b.构造方法没有返回值,不定义返回类型c.构造方法可以重载,针对参数数量和类型定义多个同名构造方法d.构造方法可以继承,子类可以继承父类的构造方法e.构造方法不是由编程人员...

    快速构造数据挖掘算法的方法.pdf

    总结来说,数据挖掘算法的快速构造方法要求深入理解算法的各个组成部分,并根据实际需求选择合适的模型结构、评分函数、优化方法和数据管理策略。通过这种方法,不仅能够提升算法的性能和效率,还能定制出更适合特定...

    Java+课后习题+第二章节

    构造方法主要有以下特点:(1)构造方法的方法名与类名相同;(2)构造方法没有返回类型(修饰符 void 也不能有);(3)构造方法通常被声明为公有的(public);(4)构造方法可以有任意多个参数;(5)构造方法的主要作用是...

    类的方法练习

    15. 构造方法调用:构造方法不能像普通方法那样被调用,只能通过`new`关键字创建对象时自动调用。选项C(只能通过new自动调用)是正确的。 16. 常量定义:在Java中,常量通常用`final`关键字定义,结合`public`修饰...

    java 抽象类与接口的区别

    5. 构造方法:抽象类可以有构造方法,用于初始化子类共享的属性;接口不能有构造方法。 6. 继承关系:抽象类遵循传统的继承关系,接口之间可以采用多重继承,即一个接口可以继承多个其他接口。 在实际开发中,我们...

    优质资源汇总【更新ing...】

    构造方法是类的特殊方法,若一个类没有声明构造方法,该程序可以正确执行,但需要默认构造方法。 7. 构造方法有哪些特性? 构造方法有很多特性,如不能被 override、不能被重写等。 8. 在调用子类构造方法之前会...

    JAVA理论知识基础复习

    JAVA理论知识基础复习涵盖了JAVA语言的基础知识,包括构造方法、new关键字、方法的重载、特殊变量this、static定义常量、继承、方法的重写、特殊变量super、多态性、接口和抽象类的区别、内部类和异常处理等相关知识...

    CSharp和Java的区别.doc

    - 一般建议构造方法为`public`。 #### 六、命名规则 - **PascalCase**:每个单词首字母大写,例如`MyClass`。 - **camelCase**:第一个单词首字母小写,后续单词首字母大写,例如`myVariableName`。 #### 七、...

    javascript工厂模式和构造函数模式创建对象方法解析.docx

    ### JavaScript工厂模式与构造函数模式创建对象方法解析 #### 一、工厂模式 在JavaScript中,工厂模式是一种常用的设计模式,用于封装创建对象的过程。它通过一个函数来创建具有相似特性的多个对象实例,这些对象...

    Java基础常见问题总结

    * 构造方法的名称与类名相同 * 构造方法没有返回值 * 构造方法可以有参数或没有参数 例如,我们可以使用构造方法来初始化Circle对象的半径属性。 3. 对象的创建和引用 对象的创建和引用是面向对象编程中非常重要...

    汽车发动机构造试题

    1. 不同类型的发动机:如汽油机、柴油机、涡轮增压发动机等的特点和区别。 2. 发动机性能指标:如功率、扭矩、燃油经济性等,以及如何通过调整参数来优化性能。 3. 故障诊断:分析发动机常见故障现象及可能的原因,...

    Java面试基础

    构造方法的名称与类名相同,且没有返回类型(包括void)。构造方法可以重载,即在同一个类中可以有多个构造方法,只要它们的参数列表不同。 以上内容涵盖了抽象类和接口在Java中的定义、使用、区别以及方法重载和...

    JAVA的重载和覆盖(论文)

    成员方法重载是指类中的非构造方法的重载,它遵循与构造方法重载相同的原则,即通过改变参数列表来实现。成员方法的重载可以使得类的行为更加丰富,同一方法名可以对应多种实现逻辑。 ### 覆盖(Override) 覆盖则...

Global site tag (gtag.js) - Google Analytics