zoukankan      html  css  js  c++  java
  • JAVA_SE基础——30.构造代码块

    黑马程序员入学blog...


    构造代码块作用:给所有的对象进行统一的初始化。


    问题:要求每个小孩出生都会哭,这份代码有两个构造函数,如果需要每个小孩出生都要哭的话,那么就需要在不同的构造函数中都调用cry()函数,但是这样子的话造成了代码重复问题,那么怎么解决呢?构造代码块。




    class Perosn{
    	private int id;//私有化int型变量id
    	
    	private String name;//私有化String型变量name
    	
    	private int age;//私有化int型变量age
    	
    	{
    		cry();// 每个Person对象创建出来都会执行这里的代码
    	}
    	
    	public Perosn(){
    		cry();
    	}
    	public Perosn(int id, String name, int age) {//为变量id,name,age初始化属性
    		this.id = id;
    		this.name = name;
    		this.age = age;
    	}
    	public int getId() {//访问Id
    		return id;
    	}
    	public void setId(int id) {//设置id
    		this.id = id;
    	}
    	public String getName() {//访问name
    		return name;
    	}
    	public void setName(String name) {//设置name
    		this.name = name;
    	}
    	public int getAge() {//访问age
    		return age;
    	}
    	public void setAge(int age) {//设置age
    		this.age = age;
    	}
    	
    	
    	public void cry(){//哭
    		System.out.println("哇哇哇....");
    	}
    	
    }


    P.S.
    1:给对象进行初始化。对象一建立就运行并且优先于构造函数。
    2:构造代码块和构造函数的区别,构造代码块是给所有对象进行统一初始化, 构造函数给对应的对象初始化。
    3:构造代码块的作用:它的作用就是将所有构造方法中公共的信息进行抽取。
    例如孩子一出生统一哭



    我们来看个完整的实例:
    class Boy {
    
    
    	String name;
    	int age;
    	String gender;
         // 构造代码块,给所有对象进行初始化。
    	{
    		System.out.println("哭。。。");
    	}
         
    	Boy() {
    		System.out.println("无参构造被调用中");
    	}
    
    
    	Boy(String n, int a, String g) {
    		name = n;
    		age = a;
    		gender = g;
    		System.out.println("有参构造被调用中");
    	}
    
    
    	void run() {
    		System.out.println("跑...");
    	}
    
    
    }
    
    
    class Demo {
    
    
    	public static void main(String[] args) {
    
    
    		Boy b = new Boy();
    
    
    		Boy b2 = new Boy("jack", 1, "男");
    
    
    	}
    }
    运行结果:
    哭。。。
    无参构造被调用中
    哭。。。
    有参构造被调用中



    只要和构造函数区分开来并且记住它们两的核心作用就好了:
    构造代码块:构造代码块是给所有对象进行统一初始化。
    构造函数:构造函数给对应的对象初始化。
  • 相关阅读:
    LeetCode 109 Convert Sorted List to Binary Search Tree
    LeetCode 108 Convert Sorted Array to Binary Search Tree
    LeetCode 107. Binary Tree Level Order Traversal II
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 103 Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 104. Maximum Depth of Binary Tree
    接口和多态性
    C# 编码规范
  • 原文地址:https://www.cnblogs.com/Jhaiha0/p/8465314.html
Copyright © 2011-2022 走看看