• 廖雪峰Java2-2数据封装-2构造方法


    在2-2-1中,创建1个实例需要3步

            Person ming = new Person();
    		ming.setName("  小明  ");
    		ming.setAge(16);
    

    问题:能否在创建对象实例时就把内部字段全部初始化为合适的值?
    构造方法因此应运而生

    1.单个构造方法

    • 构造方法可以在创建对象实例时初始化对象实例
    • 构造方法名就是类名
    • 构造方法的参数没有限制
    • 构造方法没有返回值(也没有void)
    • 必须用new操作符调用构造方法
      Person.java
    public class Person {
    	private String name;
    	private int age;
    	public Person(String name,int age) {
    		this.name = name;
    		this.age = age;
    	}
    	public void info() {
    		System.out.printf("我是%s,今年%d岁" ,name,age);
    	}
    }
    

    Hello.java

    public class Hello {
    	public static void main(String[] args) {
    		Person ming = new Person("小明",12);
    		ming.info();
    	}
    }
    
    如果一个类没有定义构造方法,编译器会自动生成一个默认构造方法: * 无参数 * 无执行语句 ```#java public Person() { } ``` 如果我们定义了构造方法,编译器不会再自动创建默认的构造方法

    构造方法初始化顺序:

    • 先初始化字段
    • 没有赋值的字段初始化为默认值:基本类型=0;引用类型=null
    • 再执行构造方法的代码

    多个构造方法

    可以定义多个构造方法,编译器通过构造方法的参数数量、位置和类型区分
    一个构造方法可以调用其他构造放方法,便于代码复用。
    调用其他构造方法的语法是this(...)
    Person.java

    public class Person {
    	private String name;
    	private int age;
    	public Person(String name,int age) {
    		this.name = name;
    		this.age = age;
    	}
    	public Person(String name) {
    		this(name,18);
    	}
    	public Person() {
    		this("Unnamed");
    	}
    	public void info() {
    		System.out.printf("我是%s,今年%d岁
    " ,name,age);
    	}
    }
    

    Hello.java

    public class Hello {
    	public static void main(String[] args) {
    		Person ming = new Person("小明",12);
    		ming.info();
    		Person hong = new Person("小红");
    		hong.info();
    		Person jun = new Person();
    		jun.info();
    	}
    }
    

    3.总结:

    实例在创建时会调用构造方法
    构造方法用于初始化实例
    没有定义构造方法时,编译器会自动创建默认的构造方法。
    可以定义多个构造方法,编译器根据参数自动判断

  • 相关阅读:
    Django之url路由
    Django之setting文件
    Diango之通过form表单向服务端发送数据
    Django之win7下安装与命令行工具
    Linux学习之查看系统资源命令总结(二十二)
    实现简单的web框架
    Linux下发送邮件
    Linux学习之日志管理(二十一)
    Shell学习之结合正则表达式与通配符的使用(五)
    Linux学习之后台任务与定时任务(二十)
  • 原文地址:https://www.cnblogs.com/csj2018/p/10262390.html
Copyright © 2020-2023  润新知