构造方法

如果要实例化新的对象,那么肯定需要使用关键字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(); // 匿名对象

最新文章

  1. iOS 10 开发适配系列 之 权限Crash问题
  2. Web服务器常用设置
  3. InnoDB的WAL方式学习
  4. BZOJ4046 [Cerc2014] Pork barre
  5. [转]MySQL Explain详解
  6. EF实体框架之CodeFirst五
  7. hibernate 对应关系级联的意思
  8. 【动态规划】Codeforces 698A & 699C Vacations
  9. JQuery中_Radio、DropDownList、Checkbox选择控件的处理
  10. sublimeText3插件安装
  11. empty 和isset的差别
  12. jdk1.8hashmap源码解析
  13. 异步多线程 Async
  14. OpenXMl倒出word、PDF
  15. Linux找回root密码
  16. Dash by Plotly 学习笔记
  17. 一个注意事项:内部类引用的外部变量必须是final的
  18. sequelize查询数据的日期格式化
  19. 20165207 Exp2 后门原理与实践
  20. 测试开发系列之Python开发mock接口(一)

热门文章

  1. surfer画世界频率分布图(等高线、地点标注)
  2. java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。
  3. mac java_home等系统参数配置
  4. Shiro简介(一)
  5. python: 多态与虚函数;
  6. MySQL5.7延迟复制半同步复制
  7. [JVM-3]Java垃圾回收(GC)机制和垃圾收集器选择
  8. 使用rvm安装与切换Ruby
  9. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cardSalDao' defined in file [E:\GItUp\pointerCard+redis\target\gameCard-1.0-SNAPSHOT\WEB-INF\classes\cn\jbit\dao
  10. windows cmd命令 批处理bat 导增量jar包【原】