zoukankan      html  css  js  c++  java
  • Java基础_0304:构造方法

    构造方法

    如果要实例化新的对象,那么肯定需要使用关键字new来完成,但是除了new这个关键字之外,还有可能在对象实例化时为其进行一些初始化的准备操作,这个时候就需要构造方法的支持了

    构造方法本身是一种特殊的方法,它只会在新对象实例化的时候调用,其定义原则:方法名称与类名称相同,没有返回值类型声明,同时构造方法也可以进行重载。

    定义构造方法
    class Book { 				// 定义一个新的类
    	/**
    	 * Book类无参构造方法
    	 */
    	public Book() {			// 构造方法
    		System.out.println("************************");
    	}
    } 
    public class TestDemo {
    	public static void main(String args[]) {
    		Book book = null ;	// 声明对象不调用构造
    		book = new Book() ;	// 实例化对象调用构造
    	}
    }
    程序执行结果:
    ************************
    
    
    利用构造方法为属性赋值
    
    class Book { 				// 定义一个新的类
    	private String title; 			// 书的名字
    	private double price; 			// 书的价格
    	/**
    	 * Book类构造方法,用于设置title与price属性的内容
    	 * @param t title属性内容
    	 * @param p price属性内容
    	 */
    	public Book(String t,double p) {		// 定义构造方法
    		setTitle(t) ;		// 调用本类方法
    		setPrice(p) ;		// 调用本类方法
    	}
    	public void setTitle(String t) {
    		title=t;
    		
    	}
    
    	public void setPrice(double p) {
    		price= p;
    		
    	}
    	// setter、getter
    
    	
    	public String getTitle() {
    		return title;
    	}
    	public double getPrice() {
    		return price;
    	}
    	public void getInfo() {
    		System.out.println("图书的名称"+title+",价格"+price);
    		
    	}
    }
    	public class TestDemo {
    	public static void main(String args[]) {
    		Book book = new Book("Java开发", 69.8); // 声明并实例化对象
    		book.getInfo();			// 调用方法
    	}
    }
    
    程序运行结果:
    图书的名称Java开发,价格69.8
    
    构造方法重载

    构造方法本身也属于方法行列,那么可以针对于构造方法进行重载,但是构造方法由于其定义的特殊性,所以在构造方法重载时,要求只注意参数的类型及个数即可。

    class Book { 			// 定义一个新的类
    	private String title; 	// 书的名字
    	private double price; 		// 书的价格
    	/**
    	 * Book类无参构造方法
    	 */
    	public Book() {	// 无参的,无返回值的构造方法
    		System.out.println("无参构造") ;
    	}
    	/**
    	 * Book类构造方法,用于设置title属性的内容
    	 * @param t title属性内容
    	 */
    	public Book(String t) {		// 有一个参数的构造
    		title = t ;	// 直接为属性赋值
    		System.out.println("有一个参数的构造") ;
    	}
    	/**
    	 * Book类构造方法,用于设置title与price属性的内容
    	 * @param t title属性内容
    	 * @param p price属性内容
    	 */
    	public Book(String t,double p) {	// 有两个参数的构造
    		title = t ;	// 直接为属性赋值
    		price = p ;// 直接为属性赋值
    		System.out.println("有两个参数的构造") ;
    	}
    	// setter、getter略
    	public void getInfo() { 			// 此方法将由对象调用
    		System.out.println("图书名称:" + title + ",价格:" + price);
    	}
    } 
    
    
    匿名对象

    如果一个对象没有则称为匿名对象,按照之前的内存关系来讲:对象的名字可以解释为在栈内存中保存,而对象的具体内容(属性)在堆内存之中保存,这样一来,没有栈内存指向堆内存空间,就是一个匿名对象
    new Book("Java开发", 69.8).getInfo(); // 匿名对象

  • 相关阅读:
    APIO 2010 特别行动队 斜率优化DP
    洛谷 P2747 Canada Tour 周游加拿大 动态规划
    VIJOS-P1282 佳佳的魔法照片 排序
    [APIO2012]派遣 可并堆
    可并堆模板题-mergeable heap
    可并堆总结
    分治思想及树上点分治
    拉丁字母(英语)缩写
    区块链是什么?跟比特币有什么关系?
    究竟什么比特币?如何理解比特币?
  • 原文地址:https://www.cnblogs.com/xuwei1/p/8339918.html
Copyright © 2011-2022 走看看