首页 > 编程知识 正文

java构造器有没有返回值,java默认构造器

时间:2023-05-05 23:34:29 阅读:147561 作者:4804

Java生成器(生成方法)什么是构造器

构造函数通常也称为构造函数,构造函数在每个项目中几乎无处不在。 对于mmdqznew对象,调用构造函数。 构造函数的格式如下。

修饰符,例如公共类名(参数列表,可以没有参数()//此处不能有return} ) )。

文章目录Java构造函数(如何构建)有关Java构造函数如何定义使用构造函数的构造函数的继承构造函数、静态代码块和构造代码块的执行顺序的详细信息,请参见以下实施例默认构造函数2 .禁止在外部创建对象3 .重载构造函数4 .继承构造函数5 .执行构造函数、静态代码块和构造函数代码块的顺序5.1如果没有继承5.2

Java构造函数

构造函数注意事项:

构造函数的名称必须与类名一致。 可以为一个类定义多个构造函数,但构造函数的参数列表必须不同。 (重载)如果未手动定义构造函数,Java系统将提供和使用缺省构造函数。 定义构造函数后,系统会将缺省构造函数角色恢复为实例化对象。 如何为对象赋予初始值代码自由块以优先定义构造函数构造函数方法的名称必须与所属类的名称一致,没有返回值,但无法声明void。 可以是任意权限,但一般使用公共方法权限,构造函数中的参数可以根据需要自行定义,参数不同的构造函数配置会过载

公共构造方法名称{ .}/*注意:1.构造方法没有返回类型2 .构造方法名称必须与该类的类名一致。 大小写是同一个例子。

class fu { public fu (() /无参的公共构建方法Publicfu(intI ) ) /参数类型为int的公共构建方法. (Publicclassdemoextendsfu ) Publicdemo ) ) ) ) ) ) ) ) )无参数的公共构建方法publicdemo(intI ) /参数类型为int的公共构建方法publicdemo(intI ), double d ) ) /参数类型为int和double的公共构建方法. }在Java中使用构造函数的构建方法有两个地方,一个是在类名中添加小括号(),另一个是在小括号内根据实际添加实参,另一个是关键字double 以下是一些示例。

例1:

Demo demo=new Demo (; //这里调用了没有参数的生成方法。 必须向方法声明。 你最好向主方法声明

上述构建方法的参数实际上通过追加实际参照,Jvm根据构建方法的参数加载不同的构建方法

示例2 :

public Demo () { this(2) ) 2; //在此调用自变量为int型的本类的构建方法)例3 :

public Demo () { super(1) ) 1; //调用参数为int的父类的构造函数方法(注意:在示例2和示例3中,this或super调用构造函数方法必须只存在于构造函数方法中,而且必须存在于第一行中,因此需要使用一个Constance 此外,如果存在this或super调用构造函数方法,则必须保留构造函数方法的出口

构造函数的继承子类生成器缺省情况下调用父类的无参数构造函数。 如果父类没有无参数构造函数,则必须使用关键字具体看下文例子指定要调用父类的哪个构造函数。 final类不允许继承,编译器报告错误。 请好好理解。 final修饰符是不允许修改的,但由于子类可以通过继承修改父类,因此会发生冲突。 因此,final类不允许继承。

关于构造函数、静态代码块、构造代码块的执行顺序,详细地说,以下实例未被继承时的执行顺序静态代码块:在程序启动后仅执行一次,优先顺序最高为330 优先顺序为静态代码块构造代码块:优先顺序为构造代码块3358www.Sina.com/有继承时的执行顺序:构造器:程序启动后最高优先级为3358www.Sina低于父类的静态代码块3358www.Sina.com/:在调用父类的任何构造函数时执行一次,优先级低于父类的静态代码块3358 www :调用父类的构造函数优先级为父类构造函数总结一下优先级:静态代码块 构造代码块 构造器:优先级为子类构造函数代码块父类静态代码块

gt; 子类构造器 实例 1.默认构造器

新建一个类,不提供任何构造器,编译器会默认提供一个无参构造器,这就是为什么没定义任何构造器,却可以new 某个对象()

public class People {}//以上这个People类就可以直接通过new People()来实例化 2.禁止对象被外部创建

如果不希望People在外部通过new People()来实例化,只需要将构造器定义为private

public class People{ private People(){ }} 3.构造器重载

重载可以简单理解为:同个方法名,不同的参数列表。如果希望People能在外部通过new People() 或 new People(“字符串”) 来实例化,则通过以下代码即可

public class People{ //通过new People()调用 public People(){ } //通过new People("字符串")调用 public People(String str){ } } 4.构造器的继承

定义父类构造器,由于该构造器自定义了一个带参构造器,覆盖了默认的无参构造器,所以不能直接 new Father() 调用了,除非再定义一个无参构造器

//父类构造器public class Father{ //自定义带参构造器 public Father(String str){ System.out.println("父类的带参构造方法,参数为:"+str); } }

定义子类构造器,继承Father,由于Father没有无参构造器,所以必须在子类构造器中通过 super(“字符串”)来调用,否则编译器会报错

//子类构造器public class Son extends Father{ //无参构造器 public Son(){ //由于Father()没有无参构造器,所以必须在子类型构造器中通过super("字符串")来调用,否则编译器会报错。 //如果没定义这句,系统会默认调用super() super(""); } //带参构造器 public Son(String str){ //由于Father()没有无参构造器,所以必须在子类型构造器中通过super("字符串")来调用,否则编译器会报错。 //如果没定义这句,系统会默认调用super() super(str); } } 5. 构造器、静态代码块、构造代码块的执行顺序 5.1无继承的情况 public class Father { static { System.out.println("父类的静态代码块,程序启动后执行,只会执行一次"); } //父类无参构造方法 public Father(){ System.out.println("父类的默认构造方法"); } //重载,自定义父类带参构造方法 public Father(String str){ System.out.println("父类的带参构造方法,参数为:"+str); } { System.out.println("父类构造代码块,每次调用构造方法都会执行的"); }}

实例化Father

//实例化Father public static void main(String[] args) { System.out.println("---------------------------------------"); Father father1 = new Father(); System.out.println("---------------------------------------"); Father father2 = new Father("年轻的黄豆"); }

执行上述代码

父类的静态代码块,程序启动后执行,只会执行一次---------------------------------------父类构造代码块,每次调用构造方法都会执行的父类的默认构造方法---------------------------------------父类构造代码块,每次调用构造方法都会执行的父类的带参构造方法,参数为:年轻的黄豆 5.2有继承的情况

定义父类Father

public class Father { static { System.out.println("父类的静态代码块,程序启动后执行,只会执行一次"); } //父类无参构造方法 public Father(){ System.out.println("父类的默认构造方法"); } //重载,自定义父类带参构造方法 public Father(String str){ System.out.println("父类的带参构造方法,参数为:"+str); } { System.out.println("父类构造代码块,每次调用构造方法都会执行的"); }}

定义子类Son,继承自父类Father

//子类构造器public class Son extends Father{ static { System.out.println("子类的静态代码块,程序启动后执行,只会执行一次,先执行父类的,在执行子类的"); } { System.out.println("子类构造代码块,每次调用构造方法都会执行的"); } //无参构造器 public Son(){ //这里没有指定调用父类的哪个构造方法,会默认调用super(),调用父类的无参构造器public Father() } //重载构造器,多传两个参数 public Son(String str1,String str2){ //必须写在构造器第一行,调用父类的带参构造器public Father(str) super(str1); System.out.println("子类带参构造器:"+str2); }}

实例化Son

public static void main(String[] args) { System.out.println("-----------------------------------"); Son son1 = new Son(); System.out.println("-----------------------------------"); Son son2 = new Son("子类第一个参数","子类第二个参数"); }

执行上述代码

父类的静态代码块,程序启动后执行,只会执行一次子类的静态代码块,程序启动后执行,只会执行一次,先执行父类的,在执行子类的-----------------------------------父类构造代码块,每次调用构造方法都会执行的父类的默认构造方法子类构造代码块,每次调用构造方法都会执行的-----------------------------------父类构造代码块,每次调用构造方法都会执行的父类的带参构造方法,参数为:子类第一个参数子类构造代码块,每次调用构造方法都会执行的子类带参构造器:子类第二个参数

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。