• 类与对象(十一)----构造器


    构造器

    什么是构造器

    构造器又叫构造方法,是类的一种特殊方法,他的主要作用是完成对新对象的初始化。
    例如:一台新手机被工厂制造好,此时这个手机什么都没有,系统没有,连壁纸都没有。这时厂商会对他进行初始化,装系统,设置出厂设置。
    同理,构造器就是对已经创建好的对象进行一个初始化

    构造器的特点

    • 构造方法的结构
      修饰符 方法名(形参列表){方法体}
    • 方法名和类名相同
    • 没有返回值
    • 在创建对象时,系统会自动调用该类的构造器完成对象初始化
    • 当程序员没有定义构造器时,系统会自动给类生成一个默认无参构造方法,这也是为什么之前创建对象都要加();的原因
    • 一旦定义了自己的构造器,那么默认的构造方法就会被覆盖。如果还想调用默认无参构造器,就必须自己再写出来。

    构造器入门

    问题:要求在创建人类时,就直接指定这个对象的年龄和姓名,而不是创建对象后再赋值
    在前面的对象创建中语句是这样的 T t = new T();这里的();就是调用构造方法

    完成这个问题有两种方法:
    第一种 - 直接在构造方法中调用属性(全局变量),进行赋值

    public Person(){
     name = "jack";
     age = 16;
    }
    

    但是这样的话就固定死了这个类的初始化,后续要创建多个同类对象不方便。所以我们用第二种方法,由于构造方法也是一个特殊的方法,所以可以利用传参机制来进行灵活初始化

    class Person{
    	String name;
    	int age;
    	public 	Person(String pname,int page){
    		name = pname;
    		age = age;
    	}
    }
    

    这样就可以在创建对象时自定义每个对象的初始化了
    演示

    public class constructor{
    	public static void main(String[] args) {
    		Person p1 = new Person("张三",45);
    		Person p2 = new Person("赵四",35);
    		System.out.println(p1.name);
    		System.out.println(p2.name);
    	}
    }
    class Person{
    	String name;
    	int age;
    	public 	Person(String pname,int page){
    		name = pname;
    		age = age;
    	}
    }
    

    输出结果:
    张三
    赵四

    • 假设要只定义一个年龄,也可以重载构造器,将形参列表修改即可

    构造器练习

    在Person类中定义两个构造器
    第一个无参构造器:设置所有人的age属性初始值为18
    第二个有参构造器,使得每次创建此类对象时,可以自定义设置name和age属性
    分别使用不同的构造器,创建对象
    思路: 重载构造方法,一个无参构造,直接调用属性初始化。一个有参构造,调用属性将形参赋值给属性

    public class constructor{
    	public static void main(String[] args) {
    		Person p1 = new Person();
    		Person p2 = new Person("赵四",35);
    		System.out.println(p1.name+p1.age);
    		System.out.println(p2.name+p2.age);
    	}
    }
    class Person{
    	String name;
    	int age;
    	public Person(){//第一个无参构造
    		age = 18;
    	}
    	public 	Person(String pname,int page){//第二个重载构造 
    		name = pname;
    		age = age;
    	}
    }
    

    输出结果
    null 18
    赵四 35

  • 相关阅读:
    【附源码】Python计算机毕业设计商场会员管理系统
    万能JAVA面试题
    Vim教程
    PLSQL工具 数据库连接名的设置
    kwebio/kweb-core:面向后端的轻量级 Kotlin Web 框架
    SQL处理JSON格式数据(一篇)
    MySQL索引设计原则
    gps点集合构造 简单多边形,排序 方向角,达到:边与边无交叉
    文件系统(四):FAT32文件系统实现原理
    获取PDF中的布局信息——如何获取段落
  • 原文地址:https://blog.csdn.net/WINorYU/article/details/126974236