java 构造方法 constructor demo笔记

demo 地址 http://pan.baidu.com/s/1bo2FG1T

package com.ws.study;

/**
 * @author Administrator
 *
 */
public class constructorA {
	
	/**
	 * 构造函数
	 */
	public constructorA(){
		System.out.println("这是一个无参数构造函数");
		
	}
	
	/**
	 * 有参数的构造函数
	 * @param i
	 * @param j
	 */
	public constructorA(int i,int j){
		System.out.println(i + "x" + j +"=" + i*j);
		
	}
	
	
	public static void main(String[] args) {
		
		try {
			/**
			 *  先来个热身,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?你第一想到的肯定是new,但是注意一点:
				A a = (A)Class.forName(“pacage.A”).newInstance();
				这和你 A a = new A(); 是一样的效果。
				newInstance()是方法 ,new 是关键字 创建对象的方式不一样,newInstance使用类加载机制,后者是创建一个新类
				newInstance()只能调用无参构造方法,而new关键字创建对象不受限制。
				newInstance()类已加载,已连接,new 类可以没被加载
				newInstance()弱类型,低效率,只能调用无参构造。
				new强类型,相对高效能调用任何public的方法。
				Class.forName()返回的是类
				Class.forNmae().newInstance()返回的object()
			 */
			constructorA cons= (constructorA) Class.forName("com.ws.study.constructorA").newInstance();
			new constructorA(3, 2);
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
	}

}

  

/**
 * 
 */
package com.ws.study;

/**
 * @author Administrator
 *
 */
public class constructorB {

	/**
	 * 
	 */
	public constructorB() {
		System.out.println("这是一个无参数构造函数B");
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		constructorA cona=new constructorA(1,2);
		new constructorB();
		try {
			Class.forName("com.ws.study.constructorA").newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

  

原文地址:https://www.cnblogs.com/hackermi/p/5354078.html