精华内容
下载资源
问答
  • java 重载构造函数

    千次阅读 2018-03-05 19:40:06
    Java中this调用重载构造函数 在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用Java特定的this(….)来调用。 this(….)方法必须出现在构造器中的第一行,用来调用其他...

    Java中this调用重载构造函数

    在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用Java特定的this(….)来调用。

     

    this(….)方法必须出现在构造器中的第一行,用来调用其他重载构造器。调用时参数必须严格匹配。

    这种调用方式的优点在于一个构造器可以不必重复编写其他构造器中已有的代码,而是通过调用其他构造函数以实现复用,从而提供良好和类代码结构。

    public class Teacher {
    private String name;           
    private String gender;  
    private int age;

    public Teacher(String name){
    this(name,"男");
    System.out.println("第一行构造器");
    }

    public Teacher(String name,String gender ){
    this(name,gender,45);
    System.out.println("第二行构造器");
    }
    public Teacher(String name,String gender ,int age){
    this.name = name;
    this.gender = gender;
    this.age = age;
    System.out.println("这是第三个构造函数");
    }

    public void setName(String name){
    this.name = name;
    }

    public String getName(){
    return name;
    }

    public void  setGender(String gender) {
    this.gender = gender;
    }

    public String getGender(){
    return gender;
    }

    public void setAge( int age) {
    if (age > 100) {
    return;
    }
    this.age = age;
    }

    public int getAge(){
    return age;
    }

    public void lecture() {

    }
    public void  doExec() {

    }
    public String say() {
    String str = "我是" + name + ",性别  " +gender + ",年龄" +age;
    return str;
    }


    }

    在TestConstructor 类中调用



    public class TestConstructor {
    public static void main(String[] args) {
    Teacher t = new Teacher("张三");
    System.out.println(t.say());

    Teacher t1 = new Teacher("李四", "女");
    System.out.println(t1.say());

    Teacher t2 = new Teacher("王五", "男", 33);
    System.out.println(t2.say());



    }


    }


    输出结果

    这是第三个构造函数
    第二行构造器
    第一行构造器
    我是张三,性别  男,年龄45
    这是第三个构造函数
    第二行构造器
    我是李四,性别  女,年龄45
    这是第三个构造函数
    我是王五,性别  男,年龄33
    展开全文
  • 主要介绍了Java 重载、重写、构造函数的实例详解的相关资料,希望通过本文大家能理解掌握java 面向对象的方法,需要的朋友可以参考下
  • 上一篇博客我们讲了类和对象的基本概念,接下来我们就要讲一下构造函数重载。想必大家对构造函数都有一定的认识,下面我们就来一起探讨探讨。一 、什么是构造函数 与类名相同 无返回值 对实例进行初始化 构造函数...

      上一篇博客我们讲了类和对象的基本概念,接下来我们就要讲一下构造函数和重载。想必大家对构造函数都有一定的认识,下面我们就来一起探讨探讨。


    一 、什么是构造函数

    • 与类名相同
    • 无返回值
    • 对实例进行初始化
    • 构造函数总是和new运算符一起被调用。
    • 构造函数可以有0个、1个或多个参数。
    public class Human {
        private String name;
        //这一个无参构造函数
        public Human(){
    
        }
        //这是一个有参构造函数
        public Human(String name){
            this.name = name;
        }
    }

    在Java的类中,如果不显示声明构造函数,JVM 会给该类一个默认的无参构造函数。当一个类声明了构造函数以后,JVM 是不会再给该类分配默认的构造函数。当然,一个类可以有多个构造函数,它们之间称为重载,下面我们就会讲到。下面我举个例子来说明构造函数的作用。

    public class Human {
        private String name;
        private int age;
        //我们在定义一个有参构造函数之后,默认无参构造函数就会被取代,因        此一般都会在该类中添加一个无参构造函数
        public Human(){
    
        }
        //重载一个构造函数,下面会讲到重载
        public Human(String name,int age){
            this.name = name;
            this.age = age;
        }
        public static void main(String[] args) {
            //下面我们用new关键字来创建一个对象
            Human human01 = new Human();
            Human human02 = new Human("孙丁",18);
            System.out.println("human01------->name:"+human01.name+"      age:"+human01.age);
            System.out.println("human02------->name:"+human02.name+"      age:"+human02.age);
        }
    }
    

    运行结果如下:

    human01------->name:null  age:0
    human02------->name:孙丁  age:18

    上述代码很好的说明我们通常通过有参构造函数来进行对象的初始化,而不是创建对象,创建对象是用new来完成的。


    二 、方法的重载


    重载的特点:

    1. 同一个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载。
    2. 当重载方法被调用时,Java编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。
    3. 方法重载不考虑方法的返回类型。
    4. 方法重载是Java实现面向对象的多态性机制的一种方式。
    public class TestOverload {
        public void run(){
            System.out.println("test.run():没有参数的方法");
        }
        public void run(int a){
            System.out.println("test.run(1):一个参数的方法");
        }
        public void run(int a,String b){
            System.out.println("test.run(1,b):二个参数的方法");
        }
        public void run(String a,int b){
            System.out.println("test.run(a,1)参数类型顺序不同也是可以的");
        }
        /* 这种重载是错误的,因为重载和返回类型没有关系
        public int run(String a,int b){
            System.out.println("和返回值类型没有关系");
        }
        */
        public static void main(String[] args) {
            TestOverload test = new TestOverload();
            test.run();
            test.run(1);
            test.run(1, "b");
            test.run("a",1);
        }
    }

    运行结果:

    test.run():没有参数的方法
    test.run(1):一个参数的方法
    test.run(1,b):二个参数的方法
    test.run(a,1)参数类型顺序不同也是可以的
    

    三 、总结


      构造函数和重载的知识点很少,而且很容易理解,看完上面的内容,大家应该有了充分的认识了,接下来我准备讲解this和super关键字,希望大家多多关注。

    展开全文
  • 构造函数 方法定义 定义:可以简单的理解为:一个模型的功能,一个对象的行为,一个function(函数) 方法分类“ 1. 返回值为空void的方法 public void m1() { 方法体 } 2. 带具体返回类型的方法 //返回基本类型...

    今天来梳理一下java中的方法
    方法定义
    方法重载
    构造函数

    方法定义
    定义:可以简单的理解为:一个模型的功能,一个对象的行为,一个function(函数)
    方法分类“

    1. 返回值为空void的方法

    public void m1() {
    		方法体
    	}
    

    2. 带具体返回类型的方法

    //返回基本类型
    int getAge() {
    		return 18;
    	}
    boolean isPerson() {
    		return false;
    	}
    	还有其他基本数据类型等
    
    

    4 带参数的方法
    基本数据类型

    public static void main(String[] args) {
    
    		int age=10;
    		m4(age);
    		System.out.println(age);
    		
    	}
    	//研究传入的基本类型变量的特性
    	static void m4(int age) {//对于基本类型来说,传入的变量会被copy-复制  一份
    		age+=10;
    		System.out.println(age);
    	}
    	
    	//传任意基本类型的参数变量 和 任意的传入顺序
    	void m3(boolean isPerson,int age,float account) {
    		
    	}
    	//传任意基本类型的参数变量
    	void m2(int age,boolean isPerson,float account) {
    		
    	}
    	//传基本数据类型
    	void m1(int age){
    		
    	}
    	
    
    

    类类型
    当类类型作为方法参数时,它要的其实是一个具体的对象,所以要先创建一个对象,然后就这个对象传入这个方法里

    public static void main(String[] args) {
    		Equipments jb=new Equipments();//先创建一个具体的对象
    		new EquipMent(jb);//将这个具体的对象传入这个方法里
    	}
    class EquipMent{
    	
    	public EquipMent(Equipments equipments) {
    		System.out.println("我是自装备");
    	}
    }
    class Equipments{
    	
    }
    
    

    方法重载
    定义:函数名相同,只要参数个数不同,参数顺序不同,则为不同的函数

    void drink(Milk milk) {
    		System.out.println("牛奶");
    	}
    	void drink(int i) {//1
    		System.out.println("咪一口");
    	}
    	//先ao一下,在咪一口,在吸一口牛奶,最后滋溜一下
    	void drink(Ao ao,int i,Milk milk,Object obj) {
    		System.out.println("吸一口酒");
    	}
    	//先ao一下,在咪一口,在吸一口牛奶,最后滋溜一下
    	void drink() {
    		drink(null);//
    		drink(1);
    		drink(null,1,null,null);
    	}
    	//可变参数
    	void drink(int... i) {//与(int[] i)相似
    		System.out.println("1");
    	}
    	void drink(int[] as,int a) {
    		System.out.println("2");
    	}
    	void drink(int a,int b,int c) {
    		
    	}
    
    
    

    可变参数实际上就是可以自定义传入函数参数的个数,会自动封装一个数组来接受例如:
    drink(1,1,1,1);==new int[]{1,1,1,1}
    注意,可变参数不仅仅可以使用到基本数据类型,还可以用于对象类型

    构造函数
    定义:
    方法名和类名一样(包括大小写)
    没有返回类型
    实例化一个对象的时候,必然调用构造方法

    隐式的构造方法
    Hero类的构造方法是

    public Hero(){

    }

    这个无参的构造方法,如果不写,就会默认提供一个
    如果提供了一个有参的构造方法
    一旦提供了一个有参的构造方法
    同时又没有显式的提供一个无参的构造方法
    那么默认的无参的构造方法,就“木有了“

    public Hero(){  
    }
    public Hero(int a){  //那么,上一个构造函数就失去了它的作用
    }
    

    构造函数与普通函数的区别:

    (1). 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。

    (2). 构造函数是在对象建立时由 jvm 调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。

    (3). 普通函数可以使用对象多次调用,构造函数就在创建对象时调用。

    (4). 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。

    (5). 构造函数没有返回值类型。
    构造函数的方法重载

    public static void main(String[] args) {
    		new  EquipMent(1);
    		new  EquipMent(1.1);
    		new  EquipMent("dg");
    		Equipments jb=new Equipments();
    		new EquipMent(jb);
    		//m1();
    	}
    }
    //构造方法重载
    class EquipMent{
    	//装备等级
    	public EquipMent(int grade) {
    		System.out.println("我是装备等级");
    	}
    	//装备的价格
    	public EquipMent(double price) {
    		System.out.println("我是装备的价格");
    	}
    	//装备的功能
    	public EquipMent(String function) {
    		System.out.println("我是装备的功能");
    	}
    	//子装备
    	public EquipMent(Equipments equipments) {
    		System.out.println("我是自装备");
    		//equipments.m2();
    		//equipments.quipments();
    	}
    	public EquipMent(EquipMent equipMent) {
    		// TODO Auto-generated constructor stub
    	}		
    }
    //子装备类
    class Equipments{
    	
    }
    
    

    以上运行的结果为:

    我是装备等级
    我是装备的价格
    我是装备的功能
    我是自装备

    展开全文
  • Java构造函数条件: 1、类中的构造函数名与类名一样; 2、构造函数没有返回值类型; 3、构造函数也可以实现重载; 4、在默认情况下,系统会给每一个类自动生成一个构造函数。但是如果人为的定义了构造函数的话,...

    Java中函数的重载条件:

    1、函数的函数名一样;

    2、函数在同一个类中;

    3、函数的参数列表不同。

    Java中构造函数条件:

    1、类中的构造函数名与类名一样;

    2、构造函数没有返回值类型;

    3、构造函数也可以实现重载;

    4、在默认情况下,系统会给每一个类自动生成一个构造函数。但是如果人为的定义了构造函数的话,系统就不会自动增加构造函数了。

    展开全文
  • 方法重写  1、重写只能出现在继承关系之中。当一个类继承它的父类方法时,都有机会重写该父类的方法。一个特例是父类的方法被标识为final。重写的主要优点是能够定义某个子类型特有的行为。  class Animal { ...
  • 重载构造函数

    2014-01-14 11:47:02
    重载构造函数,通过小代码段实例来讲解、分析重载构造函数
  • Java方法的重载以及构造函数的理解

    万次阅读 多人点赞 2012-08-07 23:50:45
    一直对重载构造函数的概念不是很理解,看了mars的视频以后有一种豁然开朗的感觉,写下来跟大家一起分享下。 方法的重载有3个条件: 1、函数位于同一个类下面; 2、方法名必须一样; 3、方法的参数列表不一样。...
  • 函数重载构造函数

    2015-03-04 22:13:36
    函数重载是说一类里有多个同名的函数,但是函数所带的参数个数以及类型不...当类中没有写出构造函数时,java会自动生成构造函数,只是对成员变量都不赋值。 有构造函数可知,函数可以重载,则构造函数也可以重载
  • 定义函数的格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…) ...在java中只能用一个关键字来表示这种情况。关键字是:void. 总结:没有具体返回值时,返回值类型用void来表示...
  • Java构造函数重载和方法重载

    千次阅读 2016-03-18 12:11:57
    通过一个小例子实现Java构造函数重载和方法重载
  • Java构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。 Java不支持像C++那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java...
  • JAVA 构造函数及其重载

    千次阅读 2019-04-13 23:34:31
    以上给出了不同构造函数重载,不同构造的同一个类的实例化对象,在实例化对象时系统就会自动调用构造函数,给相应得值进行初始化赋值;不同的构造进行不同得初始化,不同的赋值 5、如果类中没有定义构造函数,...
  • Java构造函数

    千次阅读 多人点赞 2018-11-22 13:06:46
    Java构造函数创建java构造函数的规则Java构造函数的类型没参数的构造函数 (默认函数的构造类型)Java参数化构造函数Java 构造函数重载java构造函数和方法之间的区别Q)构造函数没有返回值 ?Q)可以构造函数执行...
  • *构造函数重载 * *创建 Employee 类,属性:姓名,年龄,性别,工资。 *方法:显示对象的属性值,工作。 *要求属性要封装。 *创建 3 个对象。 *构造函数重载。 * * *方法以及方法重载 * 1、方法简称“类...
  • 1、函数的一般形式 //访问权限 返回值类型 函数名 ...2、构造函数  1.函数名与类名完全一致,那么这个函数就是构造函数。  2.构造函数没有返回值。  3.构造函数的作用是用来初始化。
  • Java构造函数重载

    千次阅读 2017-09-06 22:39:06
    package one; /* * 构造函数,在对象初始化的时候进行赋值操作 特点: 1.名称必须和类名完全... 2.... 3.... 4.当开发人员手动写了任意一个构造函数后,Jvw就不会在生成不在参数的构造函数了 * */ public class TtstNodd
  • Java中this调用重载构造函数

    万次阅读 2016-01-20 15:19:21
    在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用Java特定的this(….)来调用。   this(….)方法必须出现在构造器中的第一行,用来调用其他重载构造器。调用时参数...
  • 当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有提供构造函数...Java中的构造函数重载和方法重载很类似,可以为一个类创建多个构造函数。每一个构造函数都必须有它自己唯一的参数列表...
  • Java重载、覆盖与构造函数

    千次阅读 2013-08-16 19:17:41
    * 拷贝构造函数---Copyf t2 = new Copyf(t1);就不会在调用默认构造函数了。 * 复制clone和引用 * 重载和覆盖都是子类对父类而言 * override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,...
  • 时间2 玩重载构造函数。 由两类组成:Time2和Time2Test。
  • Java杂谈之构造函数

    千次阅读 2014-08-08 17:03:26
    Java构造函数链: 构造函数
  • Java里的构造函数(构造方法)

    千次阅读 2018-03-24 10:09:02
    本文转载之...特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数重载。一, 构造函数的特点:构造函数的主要作用是完成对象的初始...
  • java构造函数重载

    千次阅读 2017-11-11 19:08:59
    注意:任何一个类都有构造函数,只是有时候不写 特殊点: 1 、不写也会存在  2 、作用:用于构造当前类的对象、初始化当前对象的一些基本属性 3、有没有返回值?执行时间:创建当前类对象的时候,有返回值...
  • java 构造函数 重载 递归调用

    千次阅读 2017-11-28 11:24:32
    1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建属性的初始化,这样在一个构造函数中调用另外一个构造函数,可以避免重复的代码量,减少工作量; 2)在一个构造函数中调用另外一...
  • 什么是构造函数?什么是构造函数重载? 当新对象被创建的时候,构造函数会被调用。...Java构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,020
精华内容 42,808
关键字:

java重载后的构造函数

java 订阅