zoukankan      html  css  js  c++  java
  • 廖雪峰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.总结:

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

  • 相关阅读:
    phpexcel 相关知识
    php 相关的设置
    linux md5sum 常用用法
    mysql 修改group_concat的限制(row 20000 was cut by group_concat())
    mysql设置最大连接数 max_connections
    Mysql 需要修改的一些配置
    mysql设置远程访问,解决不能通过ip登录的问题(MySQL Error Number 2003,Can't connect to MySQL server )
    mysql 用户权限管理的粗略认识
    文字图片在wps中清晰化方法
    Linux 如何释放Hugepage 占用的内存
  • 原文地址:https://www.cnblogs.com/csj2018/p/10262390.html
Copyright © 2011-2022 走看看